From b707299161ef3cd83df8d5b19a7180ec70518115 Mon Sep 17 00:00:00 2001 From: Thuc Tran Date: Sat, 22 Jun 2024 22:05:06 -0400 Subject: [PATCH 1/4] Create migration to add grant_notes and grant_notes_revisions tables --- .../20240622205204_add-grant-notes-table.js | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 packages/server/migrations/20240622205204_add-grant-notes-table.js diff --git a/packages/server/migrations/20240622205204_add-grant-notes-table.js b/packages/server/migrations/20240622205204_add-grant-notes-table.js new file mode 100644 index 000000000..4791dcba7 --- /dev/null +++ b/packages/server/migrations/20240622205204_add-grant-notes-table.js @@ -0,0 +1,34 @@ +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +exports.up = function (knex) { + return knex.schema + .createTable('grant_notes', (table) => { + table.increments('id').notNullable().primary(); + table.text('grant_id').notNullable(); + table.integer('user_id').notNullable(); + table.timestamp('created_at', { useTz: true }).notNullable().defaultTo(knex.fn.now()); + + table.foreign('grant_id').references('grants.grant_id'); + table.foreign('user_id').references('users.id'); + + table.index(['grant_id', 'user_id'], 'idx_grant_id_user_id'); + }) + .createTable('grant_notes_revisions', (table) => { + table.increments('id').notNullable().primary(); + table.integer('grant_note_id').notNullable(); + table.timestamp('created_at', { useTz: true }).notNullable().defaultTo(knex.fn.now()); + table.text('text').notNullable(); + table.foreign('grant_note_id').references('grant_notes.id'); + }); +}; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +exports.down = function (knex) { + return knex.schema.dropTable('grant_notes') + .dropTable('grant_notes_revisions'); +}; From 8b8c1f267f8a555499f841d366788a278e7eb2c8 Mon Sep 17 00:00:00 2001 From: Thuc Tran Date: Sat, 22 Jun 2024 22:14:25 -0400 Subject: [PATCH 2/4] Create migration to add grant_notes and grant_notes_revisions tables --- .../server/migrations/20240622205204_add-grant-notes-table.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/server/migrations/20240622205204_add-grant-notes-table.js b/packages/server/migrations/20240622205204_add-grant-notes-table.js index 4791dcba7..9203b3337 100644 --- a/packages/server/migrations/20240622205204_add-grant-notes-table.js +++ b/packages/server/migrations/20240622205204_add-grant-notes-table.js @@ -13,7 +13,7 @@ exports.up = function (knex) { table.foreign('grant_id').references('grants.grant_id'); table.foreign('user_id').references('users.id'); - table.index(['grant_id', 'user_id'], 'idx_grant_id_user_id'); + table.unique(['grant_id', 'user_id'], 'idx_grant_id_user_id'); }) .createTable('grant_notes_revisions', (table) => { table.increments('id').notNullable().primary(); From 691834d6181fc3a78b0e2968c0475a0541a8fa24 Mon Sep 17 00:00:00 2001 From: Thuc Tran Date: Sat, 22 Jun 2024 22:46:54 -0400 Subject: [PATCH 3/4] Add useConstraint modifier to the creation of the unique index. Knex documentation says for the unique() function, that useConstraint will use a unique constraint and is default true for postgres when there is no predicate defined. Issue #3200 specifies that we want a unique index. Documentation can be found here: https://knexjs.org/guide/schema-builder.html#unique --- .../migrations/20240622205204_add-grant-notes-table.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/server/migrations/20240622205204_add-grant-notes-table.js b/packages/server/migrations/20240622205204_add-grant-notes-table.js index 9203b3337..7c39ae7d3 100644 --- a/packages/server/migrations/20240622205204_add-grant-notes-table.js +++ b/packages/server/migrations/20240622205204_add-grant-notes-table.js @@ -13,7 +13,10 @@ exports.up = function (knex) { table.foreign('grant_id').references('grants.grant_id'); table.foreign('user_id').references('users.id'); - table.unique(['grant_id', 'user_id'], 'idx_grant_id_user_id'); + table.unique(['grant_id', 'user_id'], { + indexName: 'idx_grant_id_user_id', + useConstraint: false, + }); }) .createTable('grant_notes_revisions', (table) => { table.increments('id').notNullable().primary(); From 46044045a785948da22336bee9357d886483e593 Mon Sep 17 00:00:00 2001 From: Thuc Tran Date: Sat, 22 Jun 2024 22:53:12 -0400 Subject: [PATCH 4/4] Lint --- .../server/migrations/20240622205204_add-grant-notes-table.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/server/migrations/20240622205204_add-grant-notes-table.js b/packages/server/migrations/20240622205204_add-grant-notes-table.js index 7c39ae7d3..df30dc9ae 100644 --- a/packages/server/migrations/20240622205204_add-grant-notes-table.js +++ b/packages/server/migrations/20240622205204_add-grant-notes-table.js @@ -16,7 +16,7 @@ exports.up = function (knex) { table.unique(['grant_id', 'user_id'], { indexName: 'idx_grant_id_user_id', useConstraint: false, - }); + }); }) .createTable('grant_notes_revisions', (table) => { table.increments('id').notNullable().primary();