feat: remove archived status from recordings, deletions are now immediate
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -132,11 +132,7 @@
|
||||
<div class="flex gap-1">
|
||||
<Badge
|
||||
variant={recording.status === "published" ? "default" : "outline"}
|
||||
class={recording.status === "draft"
|
||||
? "text-muted-foreground"
|
||||
: recording.status === "archived"
|
||||
? "text-yellow-600 border-yellow-500/40 bg-yellow-500/10"
|
||||
: ""}
|
||||
class={recording.status === "draft" ? "text-muted-foreground" : ""}
|
||||
>
|
||||
{recording.status}
|
||||
</Badge>
|
||||
|
||||
Reference in New Issue
Block a user