fix: make deleteRecording a hard delete instead of soft archive
Previously deleteRecording set status to "archived", leaving the row in the DB and visible in queries without a status filter. Now it hard- deletes the row. Also excludes archived recordings from the default recordings query so any pre-existing archived rows no longer appear. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2,7 +2,7 @@ import { GraphQLError } from "graphql";
|
|||||||
import { builder } from "../builder";
|
import { builder } from "../builder";
|
||||||
import { RecordingType } from "../types/index";
|
import { RecordingType } from "../types/index";
|
||||||
import { recordings, recording_plays } from "../../db/schema/index";
|
import { recordings, recording_plays } from "../../db/schema/index";
|
||||||
import { eq, and, desc } from "drizzle-orm";
|
import { eq, and, desc, ne } from "drizzle-orm";
|
||||||
import { slugify } from "../../lib/slugify";
|
import { slugify } from "../../lib/slugify";
|
||||||
import { awardPoints, checkAchievements } from "../../lib/gamification";
|
import { awardPoints, checkAchievements } from "../../lib/gamification";
|
||||||
|
|
||||||
@@ -21,6 +21,7 @@ builder.queryField("recordings", (t) =>
|
|||||||
|
|
||||||
const conditions = [eq(recordings.user_id, ctx.currentUser.id)];
|
const conditions = [eq(recordings.user_id, ctx.currentUser.id)];
|
||||||
if (args.status) conditions.push(eq(recordings.status, args.status as any));
|
if (args.status) conditions.push(eq(recordings.status, args.status as any));
|
||||||
|
else conditions.push(ne(recordings.status, "archived" as any));
|
||||||
if (args.linkedVideoId) conditions.push(eq(recordings.linked_video, args.linkedVideoId));
|
if (args.linkedVideoId) conditions.push(eq(recordings.linked_video, args.linkedVideoId));
|
||||||
|
|
||||||
const limit = args.limit || 50;
|
const limit = args.limit || 50;
|
||||||
@@ -211,10 +212,7 @@ builder.mutationField("deleteRecording", (t) =>
|
|||||||
if (!existing[0]) throw new GraphQLError("Recording not found");
|
if (!existing[0]) throw new GraphQLError("Recording not found");
|
||||||
if (existing[0].user_id !== ctx.currentUser.id) throw new GraphQLError("Forbidden");
|
if (existing[0].user_id !== ctx.currentUser.id) throw new GraphQLError("Forbidden");
|
||||||
|
|
||||||
await ctx.db
|
await ctx.db.delete(recordings).where(eq(recordings.id, args.id));
|
||||||
.update(recordings)
|
|
||||||
.set({ status: "archived", date_updated: new Date() })
|
|
||||||
.where(eq(recordings.id, args.id));
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user