diff --git a/packages/backend/src/db/schema/recordings.ts b/packages/backend/src/db/schema/recordings.ts index e5d7139..6e89e31 100644 --- a/packages/backend/src/db/schema/recordings.ts +++ b/packages/backend/src/db/schema/recordings.ts @@ -12,7 +12,7 @@ import { import { users } from "./users"; import { videos } from "./videos"; -export const recordingStatusEnum = pgEnum("recording_status", ["draft", "published", "archived"]); +export const recordingStatusEnum = pgEnum("recording_status", ["draft", "published"]); export const recordings = pgTable( "recordings", diff --git a/packages/backend/src/graphql/resolvers/recordings.ts b/packages/backend/src/graphql/resolvers/recordings.ts index d51c09e..3de9d06 100644 --- a/packages/backend/src/graphql/resolvers/recordings.ts +++ b/packages/backend/src/graphql/resolvers/recordings.ts @@ -2,7 +2,7 @@ import { GraphQLError } from "graphql"; import { builder } from "../builder"; import { RecordingType, AdminRecordingListType } from "../types/index"; import { recordings, recording_plays, users } from "../../db/schema/index"; -import { eq, and, desc, ne, ilike, count } from "drizzle-orm"; +import { eq, and, desc, ilike, count } from "drizzle-orm"; import { slugify } from "../../lib/slugify"; import { awardPoints, checkAchievements } from "../../lib/gamification"; import { requireAdmin } from "../../lib/acl"; @@ -22,7 +22,6 @@ builder.queryField("recordings", (t) => const conditions = [eq(recordings.user_id, ctx.currentUser.id)]; 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)); const limit = args.limit || 50; diff --git a/packages/backend/src/migrations/0002_remove_archived_recording_status.sql b/packages/backend/src/migrations/0002_remove_archived_recording_status.sql new file mode 100644 index 0000000..e6c8c74 --- /dev/null +++ b/packages/backend/src/migrations/0002_remove_archived_recording_status.sql @@ -0,0 +1,8 @@ +-- Update any archived recordings to draft before removing the status +UPDATE "recordings" SET "status" = 'draft' WHERE "status" = 'archived';--> statement-breakpoint + +-- Recreate enum without 'archived' +ALTER TYPE "public"."recording_status" RENAME TO "recording_status_old";--> statement-breakpoint +CREATE TYPE "public"."recording_status" AS ENUM('draft', 'published');--> statement-breakpoint +ALTER TABLE "recordings" ALTER COLUMN "status" TYPE "public"."recording_status" USING "status"::text::"public"."recording_status";--> statement-breakpoint +DROP TYPE "public"."recording_status_old"; diff --git a/packages/backend/src/migrations/meta/_journal.json b/packages/backend/src/migrations/meta/_journal.json index 0522221..c45056d 100644 --- a/packages/backend/src/migrations/meta/_journal.json +++ b/packages/backend/src/migrations/meta/_journal.json @@ -15,6 +15,13 @@ "when": 1772645674514, "tag": "0001_is_admin", "breakpoints": true + }, + { + "idx": 2, + "version": "7", + "when": 1741337600000, + "tag": "0002_remove_archived_recording_status", + "breakpoints": true } ] } \ No newline at end of file diff --git a/packages/frontend/src/routes/admin/recordings/+page.svelte b/packages/frontend/src/routes/admin/recordings/+page.svelte index d24ccb4..a7f1af3 100644 --- a/packages/frontend/src/routes/admin/recordings/+page.svelte +++ b/packages/frontend/src/routes/admin/recordings/+page.svelte @@ -132,11 +132,7 @@
{recording.status}