From 0dc45d81c5f4b421f5bc880b2fabf44c412ca8c6 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 6 Sep 2022 11:22:16 +0200 Subject: [PATCH 1/6] Add is_moderator field to the contribution_messages table. --- database/entity/0047-messages_tables/ContributionMessage.ts | 3 +++ database/migrations/0047-messages_tables.ts | 1 + 2 files changed, 4 insertions(+) diff --git a/database/entity/0047-messages_tables/ContributionMessage.ts b/database/entity/0047-messages_tables/ContributionMessage.ts index e5226043d..dd3787547 100644 --- a/database/entity/0047-messages_tables/ContributionMessage.ts +++ b/database/entity/0047-messages_tables/ContributionMessage.ts @@ -48,4 +48,7 @@ export class ContributionMessage extends BaseEntity { @Column({ length: 12, nullable: false, collation: 'utf8mb4_unicode_ci' }) type: string + + @Column({ name: 'is_moderator', type: 'bool', nullable: false, default: false }) + isModerator: boolean } diff --git a/database/migrations/0047-messages_tables.ts b/database/migrations/0047-messages_tables.ts index 36fa42a8e..aafc3020f 100644 --- a/database/migrations/0047-messages_tables.ts +++ b/database/migrations/0047-messages_tables.ts @@ -20,6 +20,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis \`deleted_at\` datetime DEFAULT NULL, \`deleted_by\` int(10) unsigned DEFAULT NULL, \`type\` varchar(12) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT "DIALOG", + \`is_moderator\` boolean NOT NULL DEFAULT false, PRIMARY KEY (\`id\`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; `) From ecc42b49fa65e186079ae9781988811f714e4bdb Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 6 Sep 2022 11:23:57 +0200 Subject: [PATCH 2/6] Add isModerator to the createContributionMessage calls. --- backend/src/graphql/resolver/AdminResolver.ts | 1 + backend/src/graphql/resolver/ContributionMessageResolver.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index f4656aec8..fbeea716c 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -722,6 +722,7 @@ export class AdminResolver { contributionMessage.message = message contributionMessage.userId = user.id contributionMessage.type = ContributionMessageType.DIALOG + contributionMessage.isModerator = true await queryRunner.manager.insert(DbContributionMessage, contributionMessage) if ( diff --git a/backend/src/graphql/resolver/ContributionMessageResolver.ts b/backend/src/graphql/resolver/ContributionMessageResolver.ts index 408481513..fb92806d0 100644 --- a/backend/src/graphql/resolver/ContributionMessageResolver.ts +++ b/backend/src/graphql/resolver/ContributionMessageResolver.ts @@ -39,6 +39,7 @@ export class ContributionMessageResolver { contributionMessage.message = message contributionMessage.userId = user.id contributionMessage.type = ContributionMessageType.DIALOG + contributionMessage.isModerator = false await queryRunner.manager.insert(DbContributionMessage, contributionMessage) if (contribution.contributionStatus === ContributionStatus.IN_PROGRESS) { From 96015a9b1b24cb2f4e79308a757f36248d3bd010 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 6 Sep 2022 11:27:27 +0200 Subject: [PATCH 3/6] Add isModerator to the graphql ContributionMessage model. --- backend/src/graphql/model/ContributionMessage.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backend/src/graphql/model/ContributionMessage.ts b/backend/src/graphql/model/ContributionMessage.ts index 1357c02cb..478afe024 100644 --- a/backend/src/graphql/model/ContributionMessage.ts +++ b/backend/src/graphql/model/ContributionMessage.ts @@ -13,6 +13,7 @@ export class ContributionMessage { this.userFirstName = user.firstName this.userLastName = user.lastName this.userId = user.id + this.isModerator = contributionMessage.isModerator } @Field(() => Number) @@ -38,6 +39,9 @@ export class ContributionMessage { @Field(() => Number, { nullable: true }) userId: number | null + + @Field(() => Boolean, { nullable: true }) + isModerator: boolean } @ObjectType() export class ContributionMessageListResult { From 317f3182feae6cafcd88b9d95a0f79a2a4f178f7 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 6 Sep 2022 14:34:13 +0200 Subject: [PATCH 4/6] Remove is_moderator from 0047 and moved it to new migration 0048. --- .../ContributionMessage.ts | 3 -- .../ContributionMessage.ts | 54 +++++++++++++++++++ database/entity/ContributionMessage.ts | 2 +- database/migrations/0047-messages_tables.ts | 1 - ...d_is_moderator_to_contribution_messages.ts | 12 +++++ 5 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 database/entity/0048-add_is_moderator_to_contribution_messages/ContributionMessage.ts create mode 100644 database/migrations/0048-add_is_moderator_to_contribution_messages.ts diff --git a/database/entity/0047-messages_tables/ContributionMessage.ts b/database/entity/0047-messages_tables/ContributionMessage.ts index dd3787547..e5226043d 100644 --- a/database/entity/0047-messages_tables/ContributionMessage.ts +++ b/database/entity/0047-messages_tables/ContributionMessage.ts @@ -48,7 +48,4 @@ export class ContributionMessage extends BaseEntity { @Column({ length: 12, nullable: false, collation: 'utf8mb4_unicode_ci' }) type: string - - @Column({ name: 'is_moderator', type: 'bool', nullable: false, default: false }) - isModerator: boolean } diff --git a/database/entity/0048-add_is_moderator_to_contribution_messages/ContributionMessage.ts b/database/entity/0048-add_is_moderator_to_contribution_messages/ContributionMessage.ts new file mode 100644 index 000000000..dd3787547 --- /dev/null +++ b/database/entity/0048-add_is_moderator_to_contribution_messages/ContributionMessage.ts @@ -0,0 +1,54 @@ +import { + BaseEntity, + Column, + DeleteDateColumn, + Entity, + JoinColumn, + ManyToOne, + PrimaryGeneratedColumn, +} from 'typeorm' +import { Contribution } from '../Contribution' +import { User } from '../User' + +@Entity('contribution_messages', { + engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci', +}) +export class ContributionMessage extends BaseEntity { + @PrimaryGeneratedColumn('increment', { unsigned: true }) + id: number + + @Column({ name: 'contribution_id', unsigned: true, nullable: false }) + contributionId: number + + @ManyToOne(() => Contribution, (contribution) => contribution.messages) + @JoinColumn({ name: 'contribution_id' }) + contribution: Contribution + + @Column({ name: 'user_id', unsigned: true, nullable: false }) + userId: number + + @ManyToOne(() => User, (user) => user.messages) + @JoinColumn({ name: 'user_id' }) + user: User + + @Column({ length: 2000, nullable: false, collation: 'utf8mb4_unicode_ci' }) + message: string + + @Column({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP', name: 'created_at' }) + createdAt: Date + + @Column({ type: 'datetime', default: null, nullable: true, name: 'updated_at' }) + updatedAt: Date + + @DeleteDateColumn({ name: 'deleted_at' }) + deletedAt: Date | null + + @Column({ name: 'deleted_by', default: null, unsigned: true, nullable: true }) + deletedBy: number + + @Column({ length: 12, nullable: false, collation: 'utf8mb4_unicode_ci' }) + type: string + + @Column({ name: 'is_moderator', type: 'bool', nullable: false, default: false }) + isModerator: boolean +} diff --git a/database/entity/ContributionMessage.ts b/database/entity/ContributionMessage.ts index 9b6450811..8ba96e3f6 100644 --- a/database/entity/ContributionMessage.ts +++ b/database/entity/ContributionMessage.ts @@ -1 +1 @@ -export { ContributionMessage } from './0047-messages_tables/ContributionMessage' +export { ContributionMessage } from './0048-add_is_moderator_to_contribution_messages/ContributionMessage' diff --git a/database/migrations/0047-messages_tables.ts b/database/migrations/0047-messages_tables.ts index aafc3020f..36fa42a8e 100644 --- a/database/migrations/0047-messages_tables.ts +++ b/database/migrations/0047-messages_tables.ts @@ -20,7 +20,6 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis \`deleted_at\` datetime DEFAULT NULL, \`deleted_by\` int(10) unsigned DEFAULT NULL, \`type\` varchar(12) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT "DIALOG", - \`is_moderator\` boolean NOT NULL DEFAULT false, PRIMARY KEY (\`id\`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; `) diff --git a/database/migrations/0048-add_is_moderator_to_contribution_messages.ts b/database/migrations/0048-add_is_moderator_to_contribution_messages.ts new file mode 100644 index 000000000..ff2e645c3 --- /dev/null +++ b/database/migrations/0048-add_is_moderator_to_contribution_messages.ts @@ -0,0 +1,12 @@ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +export async function upgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn( + `ALTER TABLE \`contribution_messages\` ADD COLUMN \`is_moderator\` boolean NOT NULL DEFAULT false;`, + ) +} + +export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn(`ALTER TABLE \`contribution_messages\` DROP COLUMN \`is_moderator\`;`) +} From a41cd825e9963f414f127e0dbb84201070d8e296 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 6 Sep 2022 14:34:32 +0200 Subject: [PATCH 5/6] Add new database version to the index file. --- backend/src/config/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/config/index.ts b/backend/src/config/index.ts index ae73fa8ac..6a2ebba87 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -10,7 +10,7 @@ Decimal.set({ }) const constants = { - DB_VERSION: '0047-messages_tables', + DB_VERSION: '0048-add_is_moderator_to_contribution_messages', DECAY_START_TIME: new Date('2021-05-13 17:46:31-0000'), // GMT+0 LOG4JS_CONFIG: 'log4js-config.json', // default log level on production should be info From 73db7707ce180822b5f9a0f81518f5be3d0f8667 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 6 Sep 2022 14:39:44 +0200 Subject: [PATCH 6/6] Remove nullable from graphql Field isModerator. --- backend/src/graphql/model/ContributionMessage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/graphql/model/ContributionMessage.ts b/backend/src/graphql/model/ContributionMessage.ts index 478afe024..d757db136 100644 --- a/backend/src/graphql/model/ContributionMessage.ts +++ b/backend/src/graphql/model/ContributionMessage.ts @@ -40,7 +40,7 @@ export class ContributionMessage { @Field(() => Number, { nullable: true }) userId: number | null - @Field(() => Boolean, { nullable: true }) + @Field(() => Boolean) isModerator: boolean } @ObjectType()