Protect upload cleanup and atomic completion paths, add durable media worker leases and brand asset validation, and introduce verified migration/bootstrap/deployment gates.
25 lines
521 B
PL/PgSQL
25 lines
521 B
PL/PgSQL
BEGIN;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (
|
|
SELECT 1
|
|
FROM "materials"
|
|
WHERE "uploadId" IS NOT NULL
|
|
AND "deletedAt" IS NULL
|
|
GROUP BY "uploadId"
|
|
HAVING COUNT(*) > 1
|
|
) THEN
|
|
RAISE EXCEPTION 'active materials contain duplicate uploadId values; refusing to rebuild materials_uploadId_key';
|
|
END IF;
|
|
END
|
|
$$;
|
|
|
|
DROP INDEX IF EXISTS "materials_uploadId_key";
|
|
|
|
CREATE UNIQUE INDEX "materials_uploadId_key"
|
|
ON "materials" USING btree ("uploadId")
|
|
WHERE "uploadId" IS NOT NULL AND "deletedAt" IS NULL;
|
|
|
|
COMMIT;
|