From 91f3e2c2b4b8d15354c6b759f79b9f6f1361f64d Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Tue, 22 Aug 2023 14:49:53 +0200 Subject: [PATCH] feat: make user.role_id not nullable (#1217) --- ...3027_make_role_id_not_nullable_in_users.ts | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 packages/backend/src/db/migrations/20230816173027_make_role_id_not_nullable_in_users.ts diff --git a/packages/backend/src/db/migrations/20230816173027_make_role_id_not_nullable_in_users.ts b/packages/backend/src/db/migrations/20230816173027_make_role_id_not_nullable_in_users.ts new file mode 100644 index 00000000..41b9bd93 --- /dev/null +++ b/packages/backend/src/db/migrations/20230816173027_make_role_id_not_nullable_in_users.ts @@ -0,0 +1,25 @@ +import { Knex } from 'knex'; + +export async function up(knex: Knex): Promise { + const role = await knex('roles') + .select('id') + .whereIn('key', ['user', 'admin']) + .orderBy('key', 'desc') + .limit(1) + .first(); + + if (role) { + // backfill nulls + await knex('users').whereNull('role_id').update({ role_id: role.id }); + } + + return await knex.schema.alterTable('users', (table) => { + table.uuid('role_id').notNullable().alter(); + }); +} + +export async function down(knex: Knex): Promise { + return await knex.schema.alterTable('users', (table) => { + table.uuid('role_id').nullable().alter(); + }); +}