~thecashewtrader/minv__server

61e536151e56b6a8ea14e0bb1874bf388c269b8f — thecashewtrader 1 year, 2 months ago e87e47e
Enable SQLite foreign keys and delete video files on video delete
3 files changed, 15 insertions(+), 0 deletions(-)

M db/schema/schema.sql
M handlers/channel.go
M handlers/videos.go
M db/schema/schema.sql => db/schema/schema.sql +2 -0
@@ 1,3 1,5 @@
PRAGMA foreign_keys = ON;

CREATE TABLE IF NOT EXISTS channels (
	   channelname text NOT NULL UNIQUE PRIMARY KEY,
	   created text NOT NULL DEFAULT CURRENT_TIMESTAMP,

M handlers/channel.go => handlers/channel.go +12 -0
@@ 2,7 2,9 @@ package handlers

import (
	"context"
	"fmt"
	"net/http"
	"os"

	"git.sr.ht/~thecashewtrader/minv__server/db"
	"git.sr.ht/~thecashewtrader/minv__server/token"


@@ 78,6 80,12 @@ func DeleteChannel(w http.ResponseWriter, r *http.Request) {
	payload, _ := token.VerifyToken(tokenString)
	channelname := payload.Username

	videos, err := db.Queries.VideoSelectVideosByChannel(context.Background(), channelname)
	if err != nil {
		render.Status(r, http.StatusBadRequest)
		return
	}

	channel, err := db.Queries.ChannelDeleteChannel(context.Background(), channelname)
	if err != nil {
		render.Status(r, http.StatusInternalServerError)


@@ 88,6 96,10 @@ func DeleteChannel(w http.ResponseWriter, r *http.Request) {
		return
	}
	
	for _, video := range videos {
		os.Remove(fmt.Sprintf("./data/videos/%s.mp4", video.Slug))
	}

	render.JSON(w, r, channel)
}


M handlers/videos.go => handlers/videos.go +1 -0
@@ 230,6 230,7 @@ func DeleteVideo(w http.ResponseWriter, r *http.Request) {
	}

	render.JSON(w, r, returnedVideo)
	os.Remove(fmt.Sprintf("./data/videos/%s.mp4", returnedVideo.Slug))
}

func UpdateVideo(w http.ResponseWriter, r *http.Request) {