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) {