From 277b5fde24437a74481931d883a6c5cd5019ecd2 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 16 Aug 2022 08:23:09 +0200 Subject: [PATCH 01/21] Create message entity, change contribution and user entities. --- .../0046-messages_tables/Contribution.ts | 67 ++++++++++++++ .../entity/0046-messages_tables/Message.ts | 29 ++++++ database/entity/0046-messages_tables/User.ts | 88 +++++++++++++++++++ 3 files changed, 184 insertions(+) create mode 100644 database/entity/0046-messages_tables/Contribution.ts create mode 100644 database/entity/0046-messages_tables/Message.ts create mode 100644 database/entity/0046-messages_tables/User.ts diff --git a/database/entity/0046-messages_tables/Contribution.ts b/database/entity/0046-messages_tables/Contribution.ts new file mode 100644 index 000000000..892ed7a33 --- /dev/null +++ b/database/entity/0046-messages_tables/Contribution.ts @@ -0,0 +1,67 @@ +import Decimal from 'decimal.js-light' +import { + BaseEntity, + Column, + Entity, + PrimaryGeneratedColumn, + DeleteDateColumn, + JoinColumn, + ManyToOne, + OneToMany, +} from 'typeorm' +import { DecimalTransformer } from '../../src/typeorm/DecimalTransformer' +import { User } from '../User' +import { Message } from './Message' + +@Entity('contributions') +export class Contribution extends BaseEntity { + @PrimaryGeneratedColumn('increment', { unsigned: true }) + id: number + + @Column({ unsigned: true, nullable: false, name: 'user_id' }) + userId: number + + @ManyToOne(() => User, (user) => user.contributions) + @JoinColumn({ name: 'user_id' }) + user: User + + @Column({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP', name: 'created_at' }) + createdAt: Date + + @Column({ type: 'datetime', nullable: false, name: 'contribution_date' }) + contributionDate: Date + + @Column({ length: 255, nullable: false, collation: 'utf8mb4_unicode_ci' }) + memo: string + + @Column({ + type: 'decimal', + precision: 40, + scale: 20, + nullable: false, + transformer: DecimalTransformer, + }) + amount: Decimal + + @Column({ unsigned: true, nullable: true, name: 'moderator_id' }) + moderatorId: number + + @Column({ unsigned: true, nullable: true, name: 'contribution_link_id' }) + contributionLinkId: number + + @Column({ unsigned: true, nullable: true, name: 'confirmed_by' }) + confirmedBy: number + + @Column({ nullable: true, name: 'confirmed_at' }) + confirmedAt: Date + + @Column({ unsigned: true, nullable: true, name: 'transaction_id' }) + transactionId: number + + @DeleteDateColumn({ name: 'deleted_at' }) + deletedAt: Date | null + + @OneToMany(() => Message, (message) => message.contribution) + @JoinColumn({ name: 'contribution_id' }) + messages?: Message[] +} diff --git a/database/entity/0046-messages_tables/Message.ts b/database/entity/0046-messages_tables/Message.ts new file mode 100644 index 000000000..375088201 --- /dev/null +++ b/database/entity/0046-messages_tables/Message.ts @@ -0,0 +1,29 @@ +import { BaseEntity, Column, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from 'typeorm' +import { Contribution } from '../Contribution' +import { User } from '../User' + +@Entity('messages') +export class Message 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 +} diff --git a/database/entity/0046-messages_tables/User.ts b/database/entity/0046-messages_tables/User.ts new file mode 100644 index 000000000..8f1cae5ba --- /dev/null +++ b/database/entity/0046-messages_tables/User.ts @@ -0,0 +1,88 @@ +import { + BaseEntity, + Entity, + PrimaryGeneratedColumn, + Column, + DeleteDateColumn, + OneToMany, + JoinColumn, +} from 'typeorm' +import { Contribution } from '../Contribution' +import { Message } from './Message' + +@Entity('users', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) +export class User extends BaseEntity { + @PrimaryGeneratedColumn('increment', { unsigned: true }) + id: number + + @Column({ name: 'public_key', type: 'binary', length: 32, default: null, nullable: true }) + pubKey: Buffer + + @Column({ name: 'privkey', type: 'binary', length: 80, default: null, nullable: true }) + privKey: Buffer + + @Column({ length: 255, unique: true, nullable: false, collation: 'utf8mb4_unicode_ci' }) + email: string + + @Column({ + name: 'first_name', + length: 255, + nullable: true, + default: null, + collation: 'utf8mb4_unicode_ci', + }) + firstName: string + + @Column({ + name: 'last_name', + length: 255, + nullable: true, + default: null, + collation: 'utf8mb4_unicode_ci', + }) + lastName: string + + @DeleteDateColumn() + deletedAt: Date | null + + @Column({ type: 'bigint', default: 0, unsigned: true }) + password: BigInt + + @Column({ name: 'email_hash', type: 'binary', length: 32, default: null, nullable: true }) + emailHash: Buffer + + @Column({ name: 'created', default: () => 'CURRENT_TIMESTAMP', nullable: false }) + createdAt: Date + + @Column({ name: 'email_checked', type: 'bool', nullable: false, default: false }) + emailChecked: boolean + + @Column({ length: 4, default: 'de', collation: 'utf8mb4_unicode_ci', nullable: false }) + language: string + + @Column({ name: 'is_admin', type: 'datetime', nullable: true, default: null }) + isAdmin: Date | null + + @Column({ name: 'referrer_id', type: 'int', unsigned: true, nullable: true, default: null }) + referrerId?: number | null + + @Column({ name: 'publisher_id', default: 0 }) + publisherId: number + + @Column({ + type: 'text', + name: 'passphrase', + collation: 'utf8mb4_unicode_ci', + nullable: true, + default: null, + }) + passphrase: string + + @OneToMany(() => Contribution, (contribution) => contribution.user) + @JoinColumn({ name: 'user_id' }) + contributions?: Contribution[] + + @OneToMany(() => Message, (message) => message.user) + @JoinColumn({ name: 'user_id' }) + messages?: Message[] +} From 73b7d3830122207cb3c82eb800e69d2d3c5e7255 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 16 Aug 2022 08:24:13 +0200 Subject: [PATCH 02/21] Change the three entities to their new definitions. --- database/entity/Contribution.ts | 2 +- database/entity/Message.ts | 1 + database/entity/User.ts | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 database/entity/Message.ts diff --git a/database/entity/Contribution.ts b/database/entity/Contribution.ts index 82dd6478c..7494f3ea9 100644 --- a/database/entity/Contribution.ts +++ b/database/entity/Contribution.ts @@ -1 +1 @@ -export { Contribution } from './0039-contributions_table/Contribution' +export { Contribution } from './0046-messages_tables/Contribution' diff --git a/database/entity/Message.ts b/database/entity/Message.ts new file mode 100644 index 000000000..9de65316d --- /dev/null +++ b/database/entity/Message.ts @@ -0,0 +1 @@ +export { Message } from './0046-messages_tables/Message' diff --git a/database/entity/User.ts b/database/entity/User.ts index 99b8c8ca9..41d388f94 100644 --- a/database/entity/User.ts +++ b/database/entity/User.ts @@ -1 +1 @@ -export { User } from './0040-add_contribution_link_id_to_user/User' +export { User } from './0046-messages_tables/User' From dd408a52ff464d2b52e6ee46167a6110d20e6e3f Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 16 Aug 2022 08:24:48 +0200 Subject: [PATCH 03/21] Down and upgrade script for 0046-messages_tables --- database/migrations/0046-messages_tables.ts | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 database/migrations/0046-messages_tables.ts diff --git a/database/migrations/0046-messages_tables.ts b/database/migrations/0046-messages_tables.ts new file mode 100644 index 000000000..59b7df803 --- /dev/null +++ b/database/migrations/0046-messages_tables.ts @@ -0,0 +1,24 @@ +/** + * MIGRATION TO CREATE THE MESSAGES TABLES + * + * This migration creates the `messages` tables in the `community_server` database (`gradido_community`). + * This is done to keep all data in the same place and is to be understood in conjunction with the next migration + * `0046-messages_tables` which will fill the tables with the existing data + */ + +export async function upgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn(` + CREATE TABLE IF NOT EXISTS \`messages\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`contribution_id\` int(10) unsigned NOT NULL, + \`user_id\` int(10) unsigned NOT NULL, + \`message\` varchar(2000) NOT NULL, + \`created_at\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (\`id\`), + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + `) +} + +export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn(`DROP TABLE IF EXISTS \`messages\`;`) +} From d86f502fe79106cbaea78b5668d73adcc2db2973 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 16 Aug 2022 08:25:21 +0200 Subject: [PATCH 04/21] Set new database version in backend config. --- 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 f44aa584c..8ee58da16 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -10,7 +10,7 @@ Decimal.set({ }) const constants = { - DB_VERSION: '0044-insert_missing_contributions', + DB_VERSION: '0046-messages_tables', 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 60890b5eacc16952cd64c0c738e5f59f1d8ed178 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 16 Aug 2022 09:07:19 +0200 Subject: [PATCH 05/21] Add eslint-disable and change import of Message in contribution. --- database/entity/0046-messages_tables/Contribution.ts | 2 +- database/migrations/0046-messages_tables.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/database/entity/0046-messages_tables/Contribution.ts b/database/entity/0046-messages_tables/Contribution.ts index 892ed7a33..928ada33e 100644 --- a/database/entity/0046-messages_tables/Contribution.ts +++ b/database/entity/0046-messages_tables/Contribution.ts @@ -11,7 +11,7 @@ import { } from 'typeorm' import { DecimalTransformer } from '../../src/typeorm/DecimalTransformer' import { User } from '../User' -import { Message } from './Message' +import { Message } from '../Message' @Entity('contributions') export class Contribution extends BaseEntity { diff --git a/database/migrations/0046-messages_tables.ts b/database/migrations/0046-messages_tables.ts index 59b7df803..d1b36054d 100644 --- a/database/migrations/0046-messages_tables.ts +++ b/database/migrations/0046-messages_tables.ts @@ -5,6 +5,8 @@ * This is done to keep all data in the same place and is to be understood in conjunction with the next migration * `0046-messages_tables` which will fill the tables with the existing data */ +/* 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(` From 959b7e3d135ec86d8f1d2051daaf59f01f38e5b8 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 16 Aug 2022 09:53:43 +0200 Subject: [PATCH 06/21] Take newer User entity. --- database/entity/0046-messages_tables/User.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/database/entity/0046-messages_tables/User.ts b/database/entity/0046-messages_tables/User.ts index 8f1cae5ba..b63d0bd8a 100644 --- a/database/entity/0046-messages_tables/User.ts +++ b/database/entity/0046-messages_tables/User.ts @@ -66,6 +66,15 @@ export class User extends BaseEntity { @Column({ name: 'referrer_id', type: 'int', unsigned: true, nullable: true, default: null }) referrerId?: number | null + @Column({ + name: 'contribution_link_id', + type: 'int', + unsigned: true, + nullable: true, + default: null, + }) + contributionLinkId?: number | null + @Column({ name: 'publisher_id', default: 0 }) publisherId: number From 2fc693f60b5fa0a58b09008e58d4156d39354e84 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 16 Aug 2022 10:30:36 +0200 Subject: [PATCH 07/21] Add Message to the entity definitions. --- database/entity/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/database/entity/index.ts b/database/entity/index.ts index 733c99a3a..9aa3ce9de 100644 --- a/database/entity/index.ts +++ b/database/entity/index.ts @@ -7,6 +7,7 @@ import { TransactionLink } from './TransactionLink' import { User } from './User' import { Contribution } from './Contribution' import { EventProtocol } from './EventProtocol' +import { Message } from './Message' export const entities = [ Contribution, @@ -18,4 +19,5 @@ export const entities = [ TransactionLink, User, EventProtocol, + Message, ] From 6553763f0780025d3646f6a877fee568ff0e3184 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 16 Aug 2022 10:30:59 +0200 Subject: [PATCH 08/21] Add collate utf8mb4_unicode_ci --- database/entity/0046-messages_tables/Message.ts | 2 +- database/migrations/0046-messages_tables.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/database/entity/0046-messages_tables/Message.ts b/database/entity/0046-messages_tables/Message.ts index 375088201..383c5eadb 100644 --- a/database/entity/0046-messages_tables/Message.ts +++ b/database/entity/0046-messages_tables/Message.ts @@ -2,7 +2,7 @@ import { BaseEntity, Column, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColu import { Contribution } from '../Contribution' import { User } from '../User' -@Entity('messages') +@Entity('messages', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) export class Message extends BaseEntity { @PrimaryGeneratedColumn('increment', { unsigned: true }) id: number diff --git a/database/migrations/0046-messages_tables.ts b/database/migrations/0046-messages_tables.ts index d1b36054d..eeacd7c6e 100644 --- a/database/migrations/0046-messages_tables.ts +++ b/database/migrations/0046-messages_tables.ts @@ -14,7 +14,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, \`contribution_id\` int(10) unsigned NOT NULL, \`user_id\` int(10) unsigned NOT NULL, - \`message\` varchar(2000) NOT NULL, + \`message\` varchar(2000) COLLATE utf8mb4_unicode_ci NOT NULL, \`created_at\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (\`id\`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; From be2fa7f8e891785ca42efcc41ddaadf7a957d2cc Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 16 Aug 2022 10:41:06 +0200 Subject: [PATCH 09/21] Fix removed , after primary key --- database/migrations/0046-messages_tables.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/migrations/0046-messages_tables.ts b/database/migrations/0046-messages_tables.ts index eeacd7c6e..e5530b950 100644 --- a/database/migrations/0046-messages_tables.ts +++ b/database/migrations/0046-messages_tables.ts @@ -16,7 +16,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis \`user_id\` int(10) unsigned NOT NULL, \`message\` varchar(2000) COLLATE utf8mb4_unicode_ci NOT NULL, \`created_at\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (\`id\`), + PRIMARY KEY (\`id\`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; `) } From 0678d53216b16915ba2cf2ffee7e60be8549f85e Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 16 Aug 2022 11:43:00 +0200 Subject: [PATCH 10/21] Remove message to user relation. --- database/entity/0046-messages_tables/Message.ts | 4 ---- database/entity/0046-messages_tables/User.ts | 4 ---- 2 files changed, 8 deletions(-) diff --git a/database/entity/0046-messages_tables/Message.ts b/database/entity/0046-messages_tables/Message.ts index 383c5eadb..2edfcfbc2 100644 --- a/database/entity/0046-messages_tables/Message.ts +++ b/database/entity/0046-messages_tables/Message.ts @@ -17,10 +17,6 @@ export class Message extends BaseEntity { @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 diff --git a/database/entity/0046-messages_tables/User.ts b/database/entity/0046-messages_tables/User.ts index b63d0bd8a..215e7a9a8 100644 --- a/database/entity/0046-messages_tables/User.ts +++ b/database/entity/0046-messages_tables/User.ts @@ -90,8 +90,4 @@ export class User extends BaseEntity { @OneToMany(() => Contribution, (contribution) => contribution.user) @JoinColumn({ name: 'user_id' }) contributions?: Contribution[] - - @OneToMany(() => Message, (message) => message.user) - @JoinColumn({ name: 'user_id' }) - messages?: Message[] } From cadc0db50cd72acdae3b2ca68dcf9fc38eec4d59 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 16 Aug 2022 11:47:10 +0200 Subject: [PATCH 11/21] Remove unused imports. --- database/entity/0046-messages_tables/Message.ts | 1 - database/entity/0046-messages_tables/User.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/database/entity/0046-messages_tables/Message.ts b/database/entity/0046-messages_tables/Message.ts index 2edfcfbc2..885dab295 100644 --- a/database/entity/0046-messages_tables/Message.ts +++ b/database/entity/0046-messages_tables/Message.ts @@ -1,6 +1,5 @@ import { BaseEntity, Column, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from 'typeorm' import { Contribution } from '../Contribution' -import { User } from '../User' @Entity('messages', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) export class Message extends BaseEntity { diff --git a/database/entity/0046-messages_tables/User.ts b/database/entity/0046-messages_tables/User.ts index 215e7a9a8..56047345a 100644 --- a/database/entity/0046-messages_tables/User.ts +++ b/database/entity/0046-messages_tables/User.ts @@ -8,7 +8,6 @@ import { JoinColumn, } from 'typeorm' import { Contribution } from '../Contribution' -import { Message } from './Message' @Entity('users', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) export class User extends BaseEntity { From c67652ab1924e42958b17739006839358eed3c0c Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 16 Aug 2022 12:00:36 +0200 Subject: [PATCH 12/21] Remove unchanged User change. --- database/entity/0046-messages_tables/User.ts | 92 -------------------- database/entity/User.ts | 2 +- 2 files changed, 1 insertion(+), 93 deletions(-) delete mode 100644 database/entity/0046-messages_tables/User.ts diff --git a/database/entity/0046-messages_tables/User.ts b/database/entity/0046-messages_tables/User.ts deleted file mode 100644 index 56047345a..000000000 --- a/database/entity/0046-messages_tables/User.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { - BaseEntity, - Entity, - PrimaryGeneratedColumn, - Column, - DeleteDateColumn, - OneToMany, - JoinColumn, -} from 'typeorm' -import { Contribution } from '../Contribution' - -@Entity('users', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) -export class User extends BaseEntity { - @PrimaryGeneratedColumn('increment', { unsigned: true }) - id: number - - @Column({ name: 'public_key', type: 'binary', length: 32, default: null, nullable: true }) - pubKey: Buffer - - @Column({ name: 'privkey', type: 'binary', length: 80, default: null, nullable: true }) - privKey: Buffer - - @Column({ length: 255, unique: true, nullable: false, collation: 'utf8mb4_unicode_ci' }) - email: string - - @Column({ - name: 'first_name', - length: 255, - nullable: true, - default: null, - collation: 'utf8mb4_unicode_ci', - }) - firstName: string - - @Column({ - name: 'last_name', - length: 255, - nullable: true, - default: null, - collation: 'utf8mb4_unicode_ci', - }) - lastName: string - - @DeleteDateColumn() - deletedAt: Date | null - - @Column({ type: 'bigint', default: 0, unsigned: true }) - password: BigInt - - @Column({ name: 'email_hash', type: 'binary', length: 32, default: null, nullable: true }) - emailHash: Buffer - - @Column({ name: 'created', default: () => 'CURRENT_TIMESTAMP', nullable: false }) - createdAt: Date - - @Column({ name: 'email_checked', type: 'bool', nullable: false, default: false }) - emailChecked: boolean - - @Column({ length: 4, default: 'de', collation: 'utf8mb4_unicode_ci', nullable: false }) - language: string - - @Column({ name: 'is_admin', type: 'datetime', nullable: true, default: null }) - isAdmin: Date | null - - @Column({ name: 'referrer_id', type: 'int', unsigned: true, nullable: true, default: null }) - referrerId?: number | null - - @Column({ - name: 'contribution_link_id', - type: 'int', - unsigned: true, - nullable: true, - default: null, - }) - contributionLinkId?: number | null - - @Column({ name: 'publisher_id', default: 0 }) - publisherId: number - - @Column({ - type: 'text', - name: 'passphrase', - collation: 'utf8mb4_unicode_ci', - nullable: true, - default: null, - }) - passphrase: string - - @OneToMany(() => Contribution, (contribution) => contribution.user) - @JoinColumn({ name: 'user_id' }) - contributions?: Contribution[] -} diff --git a/database/entity/User.ts b/database/entity/User.ts index 41d388f94..99b8c8ca9 100644 --- a/database/entity/User.ts +++ b/database/entity/User.ts @@ -1 +1 @@ -export { User } from './0046-messages_tables/User' +export { User } from './0040-add_contribution_link_id_to_user/User' From c44ed7a348959e1b731087dba6ec1c79e78b2747 Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 16 Aug 2022 15:48:53 +0200 Subject: [PATCH 13/21] Add new mendatory fields. --- database/migrations/0046-messages_tables.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/database/migrations/0046-messages_tables.ts b/database/migrations/0046-messages_tables.ts index e5530b950..a23e2242a 100644 --- a/database/migrations/0046-messages_tables.ts +++ b/database/migrations/0046-messages_tables.ts @@ -16,6 +16,9 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis \`user_id\` int(10) unsigned NOT NULL, \`message\` varchar(2000) COLLATE utf8mb4_unicode_ci NOT NULL, \`created_at\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + \`updated_at\` datetime DEFAULT NULL, + \`deleted_at\` datetime DEFAULT NULL, + \`deleted_by\` int(10) unsigned DEFAULT NULL, PRIMARY KEY (\`id\`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; `) From 47b9d67b1569344d1c16bcd582ef27d2c51c22ad Mon Sep 17 00:00:00 2001 From: elweyn Date: Tue, 16 Aug 2022 15:49:16 +0200 Subject: [PATCH 14/21] Add new mendatory fields to the entity. --- database/entity/0046-messages_tables/Message.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/database/entity/0046-messages_tables/Message.ts b/database/entity/0046-messages_tables/Message.ts index 885dab295..be16dfe02 100644 --- a/database/entity/0046-messages_tables/Message.ts +++ b/database/entity/0046-messages_tables/Message.ts @@ -21,4 +21,13 @@ export class Message extends BaseEntity { @Column({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP', name: 'created_at' }) createdAt: Date + + @Column({ type: 'datetime', default: null, nullable: true, name: 'update_at' }) + updateAt: Date + + @Column({ type: 'datetime', default: null, nullable: true, name: 'deleted_at' }) + deletedAt: Date + + @Column({ name: 'deleted_by', default: null, unsigned: true, nullable: true }) + deletedBy: number } From 6bb2ae34b16a2f1372327aed662cafd3d35df7d8 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 17 Aug 2022 09:51:23 +0200 Subject: [PATCH 15/21] Fix typo. --- database/entity/0046-messages_tables/Message.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/entity/0046-messages_tables/Message.ts b/database/entity/0046-messages_tables/Message.ts index be16dfe02..513535720 100644 --- a/database/entity/0046-messages_tables/Message.ts +++ b/database/entity/0046-messages_tables/Message.ts @@ -22,7 +22,7 @@ export class Message extends BaseEntity { @Column({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP', name: 'created_at' }) createdAt: Date - @Column({ type: 'datetime', default: null, nullable: true, name: 'update_at' }) + @Column({ type: 'datetime', default: null, nullable: true, name: 'updated_at' }) updateAt: Date @Column({ type: 'datetime', default: null, nullable: true, name: 'deleted_at' }) From e4ec7a1d5945828d8bdca421bf3a9bbaba274cf8 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 17 Aug 2022 12:04:03 +0200 Subject: [PATCH 16/21] Change Message to ContributionMessage, change 0046 to 0047. --- backend/src/config/index.ts | 2 +- backend/src/graphql/enum/MessageType.ts | 11 +++++++++++ .../Contribution.ts | 6 +++--- .../ContributionMessage.ts} | 9 +++++++-- database/entity/Contribution.ts | 2 +- database/entity/ContributionMessage.ts | 1 + database/entity/Message.ts | 1 - database/entity/index.ts | 4 ++-- ...046-messages_tables.ts => 0047-messages_tables.ts} | 5 +++-- 9 files changed, 29 insertions(+), 12 deletions(-) create mode 100644 backend/src/graphql/enum/MessageType.ts rename database/entity/{0046-messages_tables => 0047-messages_tables}/Contribution.ts (92%) rename database/entity/{0046-messages_tables/Message.ts => 0047-messages_tables/ContributionMessage.ts} (80%) create mode 100644 database/entity/ContributionMessage.ts delete mode 100644 database/entity/Message.ts rename database/migrations/{0046-messages_tables.ts => 0047-messages_tables.ts} (85%) diff --git a/backend/src/config/index.ts b/backend/src/config/index.ts index 8ee58da16..ae73fa8ac 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -10,7 +10,7 @@ Decimal.set({ }) const constants = { - DB_VERSION: '0046-messages_tables', + DB_VERSION: '0047-messages_tables', 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 diff --git a/backend/src/graphql/enum/MessageType.ts b/backend/src/graphql/enum/MessageType.ts new file mode 100644 index 000000000..a4606e464 --- /dev/null +++ b/backend/src/graphql/enum/MessageType.ts @@ -0,0 +1,11 @@ +import { registerEnumType } from 'type-graphql' + +export enum ContributionMessageType { + HISTORY = 'HISTORY', + DIALOG = 'DIALOG', +} + +registerEnumType(ContributionMessageType, { + name: 'ContributionMessageType', + description: 'Name of the Type of the ContributionMessage', +}) diff --git a/database/entity/0046-messages_tables/Contribution.ts b/database/entity/0047-messages_tables/Contribution.ts similarity index 92% rename from database/entity/0046-messages_tables/Contribution.ts rename to database/entity/0047-messages_tables/Contribution.ts index cede519ac..1ba31bb88 100644 --- a/database/entity/0046-messages_tables/Contribution.ts +++ b/database/entity/0047-messages_tables/Contribution.ts @@ -11,7 +11,7 @@ import { } from 'typeorm' import { DecimalTransformer } from '../../src/typeorm/DecimalTransformer' import { User } from '../User' -import { Message } from '../Message' +import { ContributionMessage } from '../ContributionMessage' @Entity('contributions') export class Contribution extends BaseEntity { @@ -83,7 +83,7 @@ export class Contribution extends BaseEntity { @DeleteDateColumn({ name: 'deleted_at' }) deletedAt: Date | null - @OneToMany(() => Message, (message) => message.contribution) + @OneToMany(() => ContributionMessage, (message) => message.contribution) @JoinColumn({ name: 'contribution_id' }) - messages?: Message[] + messages?: ContributionMessage[] } diff --git a/database/entity/0046-messages_tables/Message.ts b/database/entity/0047-messages_tables/ContributionMessage.ts similarity index 80% rename from database/entity/0046-messages_tables/Message.ts rename to database/entity/0047-messages_tables/ContributionMessage.ts index 513535720..a09d19f75 100644 --- a/database/entity/0046-messages_tables/Message.ts +++ b/database/entity/0047-messages_tables/ContributionMessage.ts @@ -1,8 +1,10 @@ import { BaseEntity, Column, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from 'typeorm' import { Contribution } from '../Contribution' -@Entity('messages', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) -export class Message extends BaseEntity { +@Entity('contribution_messages', { + engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci', +}) +export class ContributionMessage extends BaseEntity { @PrimaryGeneratedColumn('increment', { unsigned: true }) id: number @@ -30,4 +32,7 @@ export class Message extends BaseEntity { @Column({ name: 'deleted_by', default: null, unsigned: true, nullable: true }) deletedBy: number + + @Column({ length: 12, nullable: false, collation: 'utf8mb4_unicode_ci' }) + type: string } diff --git a/database/entity/Contribution.ts b/database/entity/Contribution.ts index 7494f3ea9..f6530f00b 100644 --- a/database/entity/Contribution.ts +++ b/database/entity/Contribution.ts @@ -1 +1 @@ -export { Contribution } from './0046-messages_tables/Contribution' +export { Contribution } from './0047-messages_tables/Contribution' diff --git a/database/entity/ContributionMessage.ts b/database/entity/ContributionMessage.ts new file mode 100644 index 000000000..9b6450811 --- /dev/null +++ b/database/entity/ContributionMessage.ts @@ -0,0 +1 @@ +export { ContributionMessage } from './0047-messages_tables/ContributionMessage' diff --git a/database/entity/Message.ts b/database/entity/Message.ts deleted file mode 100644 index 9de65316d..000000000 --- a/database/entity/Message.ts +++ /dev/null @@ -1 +0,0 @@ -export { Message } from './0046-messages_tables/Message' diff --git a/database/entity/index.ts b/database/entity/index.ts index 9aa3ce9de..abd31bfb9 100644 --- a/database/entity/index.ts +++ b/database/entity/index.ts @@ -7,7 +7,7 @@ import { TransactionLink } from './TransactionLink' import { User } from './User' import { Contribution } from './Contribution' import { EventProtocol } from './EventProtocol' -import { Message } from './Message' +import { ContributionMessage } from './ContributionMessage' export const entities = [ Contribution, @@ -19,5 +19,5 @@ export const entities = [ TransactionLink, User, EventProtocol, - Message, + ContributionMessage, ] diff --git a/database/migrations/0046-messages_tables.ts b/database/migrations/0047-messages_tables.ts similarity index 85% rename from database/migrations/0046-messages_tables.ts rename to database/migrations/0047-messages_tables.ts index a23e2242a..36fa42a8e 100644 --- a/database/migrations/0046-messages_tables.ts +++ b/database/migrations/0047-messages_tables.ts @@ -10,7 +10,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promise>) { await queryFn(` - CREATE TABLE IF NOT EXISTS \`messages\` ( + CREATE TABLE IF NOT EXISTS \`contribution_messages\` ( \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, \`contribution_id\` int(10) unsigned NOT NULL, \`user_id\` int(10) unsigned NOT NULL, @@ -19,11 +19,12 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis \`updated_at\` datetime DEFAULT NULL, \`deleted_at\` datetime DEFAULT NULL, \`deleted_by\` int(10) unsigned DEFAULT NULL, + \`type\` varchar(12) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT "DIALOG", PRIMARY KEY (\`id\`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; `) } export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { - await queryFn(`DROP TABLE IF EXISTS \`messages\`;`) + await queryFn(`DROP TABLE IF EXISTS \`contribution_messages\`;`) } From e0185b4afb61ca368bf990b55456c2f7af960da1 Mon Sep 17 00:00:00 2001 From: Hannes Heine Date: Thu, 18 Aug 2022 12:08:40 +0200 Subject: [PATCH 17/21] Update database/entity/0047-messages_tables/ContributionMessage.ts Co-authored-by: Moriz Wahl --- database/entity/0047-messages_tables/ContributionMessage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/entity/0047-messages_tables/ContributionMessage.ts b/database/entity/0047-messages_tables/ContributionMessage.ts index a09d19f75..b88a8d427 100644 --- a/database/entity/0047-messages_tables/ContributionMessage.ts +++ b/database/entity/0047-messages_tables/ContributionMessage.ts @@ -25,7 +25,7 @@ export class ContributionMessage extends BaseEntity { createdAt: Date @Column({ type: 'datetime', default: null, nullable: true, name: 'updated_at' }) - updateAt: Date + updatedAt: Date @Column({ type: 'datetime', default: null, nullable: true, name: 'deleted_at' }) deletedAt: Date From ab681dd5ac02993e9f0b1e68c668c8ce31dd3575 Mon Sep 17 00:00:00 2001 From: Hannes Heine Date: Thu, 18 Aug 2022 12:08:52 +0200 Subject: [PATCH 18/21] Update database/entity/0047-messages_tables/ContributionMessage.ts Co-authored-by: Moriz Wahl --- database/entity/0047-messages_tables/ContributionMessage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/entity/0047-messages_tables/ContributionMessage.ts b/database/entity/0047-messages_tables/ContributionMessage.ts index b88a8d427..8d5e4954b 100644 --- a/database/entity/0047-messages_tables/ContributionMessage.ts +++ b/database/entity/0047-messages_tables/ContributionMessage.ts @@ -27,7 +27,7 @@ export class ContributionMessage extends BaseEntity { @Column({ type: 'datetime', default: null, nullable: true, name: 'updated_at' }) updatedAt: Date - @Column({ type: 'datetime', default: null, nullable: true, name: 'deleted_at' }) + @DeleteDateColumn({ name: 'deleted_at' }) deletedAt: Date @Column({ name: 'deleted_by', default: null, unsigned: true, nullable: true }) From 0cc5be1c11a3a95024bf38a49cf409cca424366e Mon Sep 17 00:00:00 2001 From: Hannes Heine Date: Thu, 18 Aug 2022 12:09:08 +0200 Subject: [PATCH 19/21] Update database/entity/0047-messages_tables/ContributionMessage.ts Co-authored-by: Moriz Wahl --- database/entity/0047-messages_tables/ContributionMessage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/entity/0047-messages_tables/ContributionMessage.ts b/database/entity/0047-messages_tables/ContributionMessage.ts index 8d5e4954b..416a324ad 100644 --- a/database/entity/0047-messages_tables/ContributionMessage.ts +++ b/database/entity/0047-messages_tables/ContributionMessage.ts @@ -28,7 +28,7 @@ export class ContributionMessage extends BaseEntity { updatedAt: Date @DeleteDateColumn({ name: 'deleted_at' }) - deletedAt: Date + deletedAt: Date | null @Column({ name: 'deleted_by', default: null, unsigned: true, nullable: true }) deletedBy: number From 0a2c8c6a08ed4c7cd0cbf235f0e6faf4408339cb Mon Sep 17 00:00:00 2001 From: elweyn Date: Fri, 19 Aug 2022 12:18:55 +0200 Subject: [PATCH 20/21] Add import for deletedatecolumn. --- database/entity/0047-messages_tables/ContributionMessage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/entity/0047-messages_tables/ContributionMessage.ts b/database/entity/0047-messages_tables/ContributionMessage.ts index 416a324ad..b587e4650 100644 --- a/database/entity/0047-messages_tables/ContributionMessage.ts +++ b/database/entity/0047-messages_tables/ContributionMessage.ts @@ -1,4 +1,4 @@ -import { BaseEntity, Column, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from 'typeorm' +import { BaseEntity, Column, DeleteDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from 'typeorm' import { Contribution } from '../Contribution' @Entity('contribution_messages', { From 49e25bef36ee8ac4325e02bff695a6fe0f909734 Mon Sep 17 00:00:00 2001 From: elweyn Date: Fri, 19 Aug 2022 12:22:12 +0200 Subject: [PATCH 21/21] Fix prettier. --- .../entity/0047-messages_tables/ContributionMessage.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/database/entity/0047-messages_tables/ContributionMessage.ts b/database/entity/0047-messages_tables/ContributionMessage.ts index b587e4650..d9ac124dd 100644 --- a/database/entity/0047-messages_tables/ContributionMessage.ts +++ b/database/entity/0047-messages_tables/ContributionMessage.ts @@ -1,4 +1,12 @@ -import { BaseEntity, Column, DeleteDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from 'typeorm' +import { + BaseEntity, + Column, + DeleteDateColumn, + Entity, + JoinColumn, + ManyToOne, + PrimaryGeneratedColumn, +} from 'typeorm' import { Contribution } from '../Contribution' @Entity('contribution_messages', {