mirror of
https://github.com/immich-app/immich.git
synced 2025-12-25 17:24:58 +03:00
feat: sync stacks (#19629)
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import { Kysely, sql } from 'kysely';
|
||||
|
||||
export async function up(db: Kysely<any>): Promise<void> {
|
||||
await sql`CREATE TABLE "stacks_audit" ("id" uuid NOT NULL DEFAULT immich_uuid_v7(), "stackId" uuid NOT NULL, "userId" uuid NOT NULL, "deletedAt" timestamp with time zone NOT NULL DEFAULT clock_timestamp());`.execute(db);
|
||||
await sql`ALTER TABLE "asset_stack" ADD "createdAt" timestamp with time zone NOT NULL DEFAULT now();`.execute(db);
|
||||
await sql`ALTER TABLE "asset_stack" ADD "updatedAt" timestamp with time zone NOT NULL DEFAULT now();`.execute(db);
|
||||
await sql`ALTER TABLE "asset_stack" ADD "updateId" uuid NOT NULL DEFAULT immich_uuid_v7();`.execute(db);
|
||||
await sql`ALTER TABLE "stacks_audit" ADD CONSTRAINT "PK_dbe4ec648fa032e8973297de07e" PRIMARY KEY ("id");`.execute(db);
|
||||
await sql`CREATE INDEX "IDX_stacks_audit_deleted_at" ON "stacks_audit" ("deletedAt")`.execute(db);
|
||||
await sql`CREATE OR REPLACE FUNCTION stacks_delete_audit()
|
||||
RETURNS TRIGGER
|
||||
LANGUAGE PLPGSQL
|
||||
AS $$
|
||||
BEGIN
|
||||
INSERT INTO stacks_audit ("stackId", "userId")
|
||||
SELECT "id", "ownerId"
|
||||
FROM OLD;
|
||||
RETURN NULL;
|
||||
END
|
||||
$$;`.execute(db);
|
||||
await sql`CREATE OR REPLACE TRIGGER "stacks_delete_audit"
|
||||
AFTER DELETE ON "asset_stack"
|
||||
REFERENCING OLD TABLE AS "old"
|
||||
FOR EACH STATEMENT
|
||||
WHEN (pg_trigger_depth() = 0)
|
||||
EXECUTE FUNCTION stacks_delete_audit();`.execute(db);
|
||||
await sql`CREATE OR REPLACE TRIGGER "stacks_updated_at"
|
||||
BEFORE UPDATE ON "asset_stack"
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION updated_at();`.execute(db);
|
||||
}
|
||||
|
||||
export async function down(db: Kysely<any>): Promise<void> {
|
||||
await sql`DROP TRIGGER "stacks_delete_audit" ON "asset_stack";`.execute(db);
|
||||
await sql`DROP TRIGGER "stacks_updated_at" ON "asset_stack";`.execute(db);
|
||||
await sql`DROP INDEX "IDX_stacks_audit_deleted_at";`.execute(db);
|
||||
await sql`ALTER TABLE "stacks_audit" DROP CONSTRAINT "PK_dbe4ec648fa032e8973297de07e";`.execute(db);
|
||||
await sql`ALTER TABLE "asset_stack" DROP COLUMN "createdAt";`.execute(db);
|
||||
await sql`ALTER TABLE "asset_stack" DROP COLUMN "updatedAt";`.execute(db);
|
||||
await sql`ALTER TABLE "asset_stack" DROP COLUMN "updateId";`.execute(db);
|
||||
await sql`DROP TABLE "stacks_audit";`.execute(db);
|
||||
await sql`DROP FUNCTION stacks_delete_audit;`.execute(db);
|
||||
}
|
||||
Reference in New Issue
Block a user