From 74a299dbe6714f5905a91f974109d861ae40eb19 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Wed, 1 Mar 2023 21:40:39 +0000 Subject: [PATCH] feat: introduce full name column to user model --- packages/backend/bin/database/utils.ts | 1 + .../20230301211751_add_full_name_to_users.ts | 15 +++++++++++++++ packages/backend/src/graphql/schema.graphql | 2 ++ packages/backend/src/models/user.ts | 4 +++- .../web/src/graphql/queries/get-current-user.ts | 1 + 5 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 packages/backend/src/db/migrations/20230301211751_add_full_name_to_users.ts diff --git a/packages/backend/bin/database/utils.ts b/packages/backend/bin/database/utils.ts index 50007e4d..b1170280 100644 --- a/packages/backend/bin/database/utils.ts +++ b/packages/backend/bin/database/utils.ts @@ -12,6 +12,7 @@ export async function createUser( const userParams = { email, password, + fullName: 'Initial admin', role: 'admin', }; diff --git a/packages/backend/src/db/migrations/20230301211751_add_full_name_to_users.ts b/packages/backend/src/db/migrations/20230301211751_add_full_name_to_users.ts new file mode 100644 index 00000000..6795d02d --- /dev/null +++ b/packages/backend/src/db/migrations/20230301211751_add_full_name_to_users.ts @@ -0,0 +1,15 @@ +import { Knex } from 'knex'; + +export async function up(knex: Knex): Promise { + return knex.schema.table('users', async (table) => { + table.string('full_name'); + + await knex('users').update({ full_name: 'Initial admin' }); + }); +} + +export async function down(knex: Knex): Promise { + return knex.schema.table('users', (table) => { + table.dropColumn('full_name'); + }); +} diff --git a/packages/backend/src/graphql/schema.graphql b/packages/backend/src/graphql/schema.graphql index 5598932f..1e09a90e 100644 --- a/packages/backend/src/graphql/schema.graphql +++ b/packages/backend/src/graphql/schema.graphql @@ -427,7 +427,9 @@ input StepInput { type User { id: String + fullName: String email: String + role: String createdAt: String updatedAt: String } diff --git a/packages/backend/src/models/user.ts b/packages/backend/src/models/user.ts index 7dc2935b..c5cc9e7c 100644 --- a/packages/backend/src/models/user.ts +++ b/packages/backend/src/models/user.ts @@ -9,6 +9,7 @@ import crypto from 'crypto'; class User extends Base { id!: string; + fullName!: string; email!: string; password!: string; role: string; @@ -23,10 +24,11 @@ class User extends Base { static jsonSchema = { type: 'object', - required: ['email', 'password'], + required: ['fullName', 'email', 'password'], properties: { id: { type: 'string', format: 'uuid' }, + fullName: { type: 'string', minLength: 1 }, email: { type: 'string', format: 'email', minLength: 1, maxLength: 255 }, password: { type: 'string', minLength: 1, maxLength: 255 }, role: { type: 'string', enum: ['admin', 'user'] }, diff --git a/packages/web/src/graphql/queries/get-current-user.ts b/packages/web/src/graphql/queries/get-current-user.ts index 487b6730..4d3151c3 100644 --- a/packages/web/src/graphql/queries/get-current-user.ts +++ b/packages/web/src/graphql/queries/get-current-user.ts @@ -4,6 +4,7 @@ export const GET_CURRENT_USER = gql` query GetCurrentUser { getCurrentUser { id + fullName email createdAt updatedAt