diff --git a/server/src/migrations/1737672307560-AddUpdatedAtTriggers.ts b/server/src/migrations/1737672307560-AddUpdatedAtTriggers.ts new file mode 100644 index 0000000000..74dde826fb --- /dev/null +++ b/server/src/migrations/1737672307560-AddUpdatedAtTriggers.ts @@ -0,0 +1,102 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddUpdatedAtTriggers1737672307560 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise<void> { + await queryRunner.query(` + create function updated_at() + returns trigger as $$ + begin + new."updatedAt" = now(); + return new; + end; + $$ language 'plpgsql'`); + + await queryRunner.query(` + create trigger activity_updated_at + before update on activity + for each row execute procedure updated_at() + `); + + await queryRunner.query(` + create trigger albums_updated_at + before update on albums + for each row execute procedure updated_at() + `); + + await queryRunner.query(` + create trigger api_keys_updated_at + before update on api_keys + for each row execute procedure updated_at() + `); + + await queryRunner.query(` + create trigger asset_files_updated_at + before update on asset_files + for each row execute procedure updated_at() + `); + + await queryRunner.query(` + create trigger assets_updated_at + before update on assets + for each row execute procedure updated_at() + `); + + await queryRunner.query(` + create trigger libraries_updated_at + before update on libraries + for each row execute procedure updated_at() + `); + + await queryRunner.query(` + create trigger memories_updated_at + before update on memories + for each row execute procedure updated_at() + `); + + await queryRunner.query(` + create trigger partners_updated_at + before update on partners + for each row execute procedure updated_at() + `); + + await queryRunner.query(` + create trigger person_updated_at + before update on person + for each row execute procedure updated_at() + `); + + await queryRunner.query(` + create trigger sessions_updated_at + before update on sessions + for each row execute procedure updated_at() + `); + + await queryRunner.query(` + create trigger tags_updated_at + before update on tags + for each row execute procedure updated_at() + `); + + await queryRunner.query(` + create trigger users_updated_at + before update on users + for each row execute procedure updated_at() + `); + } + + public async down(queryRunner: QueryRunner): Promise<void> { + await queryRunner.query(`drop trigger activity_updated_at on activity`); + await queryRunner.query(`drop trigger albums_updated_at on albums`); + await queryRunner.query(`drop trigger api_keys_updated_at on api_keys`); + await queryRunner.query(`drop trigger asset_files_updated_at on asset_files`); + await queryRunner.query(`drop trigger assets_updated_at on assets`); + await queryRunner.query(`drop trigger libraries_updated_at on libraries`); + await queryRunner.query(`drop trigger memories_updated_at on memories`); + await queryRunner.query(`drop trigger partners_updated_at on partners`); + await queryRunner.query(`drop trigger person_updated_at on person`); + await queryRunner.query(`drop trigger sessions_updated_at on sessions`); + await queryRunner.query(`drop trigger tags_updated_at on tags`); + await queryRunner.query(`drop trigger users_updated_at on users`); + await queryRunner.query(`drop function updated_at_trigger`); + } +}