From 0db133279f93368e8eedc2014e1430a0c5bf2228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A1muel=20Fekete?= Date: Fri, 10 May 2024 21:34:16 +0200 Subject: [PATCH] make email nullable in user schema --- .vscode/settings.json | 2 +- migrations/20240510212804_nullable_email.ts | 16 ++++++++++++++++ src/components/tickets/ticket.service.ts | 5 ++++- src/components/users/user.service.ts | 2 +- src/components/users/user.ts | 4 ++-- 5 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 migrations/20240510212804_nullable_email.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 7e3c5d80..00bb0af1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,7 +11,7 @@ }, "typescript.referencesCodeLens.enabled": true, "editor.codeActionsOnSave": { - "source.fixAll.eslint": true + "source.fixAll.eslint": "explicit" }, "files.insertFinalNewline": true, "eslint.enable": true diff --git a/migrations/20240510212804_nullable_email.ts b/migrations/20240510212804_nullable_email.ts new file mode 100644 index 00000000..322bfc40 --- /dev/null +++ b/migrations/20240510212804_nullable_email.ts @@ -0,0 +1,16 @@ +import * as Knex from 'knex' + + +export async function up(knex: Knex): Promise { + return knex.schema.alterTable('users', table => { + table.string('email').nullable().alter() + }) +} + + +export async function down(knex: Knex): Promise { + return knex.schema.alterTable('users', table => { + table.string('email').notNullable().alter() + }) +} + diff --git a/src/components/tickets/ticket.service.ts b/src/components/tickets/ticket.service.ts index ccba89b0..0f2c3da3 100644 --- a/src/components/tickets/ticket.service.ts +++ b/src/components/tickets/ticket.service.ts @@ -47,7 +47,10 @@ export const sendEmailToTicketAdmins = asyncWrapper( async (req: Request, res: Response, next: NextFunction) => { const ticket = req.body - const emailRecepients = await User.query().where({ role: RoleType.TICKET_ADMIN }) + const emailRecepients = await User + .query() + .where({ role: RoleType.TICKET_ADMIN }) + .whereNotNull('email') sendEmail(emailRecepients, { subject: `Új hibajegyet vettek fel a ${ticket.roomNumber}. emeleti tanulószobába!`, body: `Új hibajegyet vettek fel a ${ticket.roomNumber}. emeleti tanulószobába! diff --git a/src/components/users/user.service.ts b/src/components/users/user.service.ts index 0d00740a..fc6b9fb9 100644 --- a/src/components/users/user.service.ts +++ b/src/components/users/user.service.ts @@ -6,7 +6,7 @@ import { asyncWrapper } from '../../util/asyncWrapper' interface OAuthUser { displayName: string internal_id: string - mail: string + mail?: string } export const getUser = asyncWrapper(async (req: Request, res: Response, next: NextFunction) => { diff --git a/src/components/users/user.ts b/src/components/users/user.ts index d0fd1cbc..d770ad68 100644 --- a/src/components/users/user.ts +++ b/src/components/users/user.ts @@ -12,7 +12,7 @@ export enum RoleType { export class User extends Model { id!: number name: string - email: string + email?: string authSchId: string role: RoleType floor: number @@ -45,7 +45,7 @@ export class User extends Model { static get jsonSchema(): Record { return { type: 'object', - required: ['name', 'email', 'authSchId'], + required: ['name', 'authSchId'], properties: { id: { type: 'integer' },