From df6b0326ba429f40489da63a1fdffce20bb00dbf Mon Sep 17 00:00:00 2001 From: Philipinho <16838612+Philipinho@users.noreply.github.com> Date: Mon, 25 Mar 2024 00:46:24 +0000 Subject: [PATCH] new migration file --- .../migrations/20240324T086300-pages.ts | 3 +-- .../20240324T086800-pages-tsvector-trigger.ts | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 apps/server/src/kysely/migrations/20240324T086800-pages-tsvector-trigger.ts diff --git a/apps/server/src/kysely/migrations/20240324T086300-pages.ts b/apps/server/src/kysely/migrations/20240324T086300-pages.ts index d697479..f32356b 100644 --- a/apps/server/src/kysely/migrations/20240324T086300-pages.ts +++ b/apps/server/src/kysely/migrations/20240324T086300-pages.ts @@ -23,7 +23,7 @@ export async function up(db: Kysely): Promise { .addColumn('deletedById', 'uuid', (col) => col) .addColumn('spaceId', 'uuid', (col) => col.notNull()) .addColumn('workspaceId', 'uuid', (col) => col.notNull()) - .addColumn('isLocked', 'boolean', (col) => col.notNull()) + .addColumn('isLocked', 'boolean', (col) => col.defaultTo(false).notNull()) .addColumn('status', 'varchar', (col) => col) .addColumn('publishedAt', 'date', (col) => col) .addColumn('createdAt', 'timestamp', (col) => @@ -44,6 +44,5 @@ export async function up(db: Kysely): Promise { } export async function down(db: Kysely): Promise { - await db.schema.dropIndex('IDX_pages_tsv').on('pages').execute(); await db.schema.dropTable('pages').execute(); } diff --git a/apps/server/src/kysely/migrations/20240324T086800-pages-tsvector-trigger.ts b/apps/server/src/kysely/migrations/20240324T086800-pages-tsvector-trigger.ts new file mode 100644 index 0000000..9dcc4dc --- /dev/null +++ b/apps/server/src/kysely/migrations/20240324T086800-pages-tsvector-trigger.ts @@ -0,0 +1,22 @@ +import { type Kysely, sql } from 'kysely'; + +export async function up(db: Kysely): Promise { + await sql`CREATE FUNCTION pages_tsvector_trigger() RETURNS trigger AS $$ + begin + new.tsv := + setweight(to_tsvector('english', coalesce(new.title, '')), 'A') || + setweight(to_tsvector('english', coalesce(new.\"textContent\", '')), 'B'); + return new; + end; + $$ LANGUAGE plpgsql;`.execute(db); + + await sql`CREATE TRIGGER pages_tsvector_update BEFORE INSERT OR UPDATE + ON pages FOR EACH ROW EXECUTE FUNCTION pages_tsvector_trigger();`.execute( + db, + ); +} + +export async function down(db: Kysely): Promise { + await sql`DROP trigger pages_tsvector_update ON pages`.execute(db); + await sql`DROP FUNCTION pages_tsvector_trigger`.execute(db); +}