From f49610aef42c85441c845bd7a8e6962fc86548e6 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 21 Mar 2022 17:03:20 +0100 Subject: [PATCH 1/4] add referrer id migration --- database/migrations/0033-add_referrer_id.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 database/migrations/0033-add_referrer_id.ts diff --git a/database/migrations/0033-add_referrer_id.ts b/database/migrations/0033-add_referrer_id.ts new file mode 100644 index 000000000..e45d1faf7 --- /dev/null +++ b/database/migrations/0033-add_referrer_id.ts @@ -0,0 +1,14 @@ +/* MIGRATION TO ADD referrer_id FIELD TO users */ + +/* 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 `users` ADD COLUMN `referrer_id` int UNSIGNED DEFAULT NULL AFTER `language`;', + ) +} + +export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn('ALTER TABLE `users` DROP COLUMN `referrer_id`;') +} From 88cd631bca88036fe9b18e9a3b77bac40a555aa4 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 21 Mar 2022 17:04:45 +0100 Subject: [PATCH 2/4] update database version --- 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 8143e7b92..754bfbf08 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -10,7 +10,7 @@ Decimal.set({ }) const constants = { - DB_VERSION: '0032-add-transaction-link-to-transaction', + DB_VERSION: '0033-add_referrer_id', DECAY_START_TIME: new Date('2021-05-13 17:46:31'), // GMT+0 } From 8c802a9bee05d81eb46b74c7b917df62d3846b22 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 21 Mar 2022 17:08:56 +0100 Subject: [PATCH 3/4] add referrerId to entity model of User --- database/entity/0033-add_referrer_id/User.ts | 78 ++++++++++++++++++++ database/entity/User.ts | 2 +- 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 database/entity/0033-add_referrer_id/User.ts diff --git a/database/entity/0033-add_referrer_id/User.ts b/database/entity/0033-add_referrer_id/User.ts new file mode 100644 index 000000000..48c804b63 --- /dev/null +++ b/database/entity/0033-add_referrer_id/User.ts @@ -0,0 +1,78 @@ +import { + BaseEntity, + Entity, + PrimaryGeneratedColumn, + Column, + OneToMany, + DeleteDateColumn, +} from 'typeorm' +import { UserSetting } from '../UserSetting' + +@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: '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(() => UserSetting, (userSetting) => userSetting.user) + settings: UserSetting[] +} diff --git a/database/entity/User.ts b/database/entity/User.ts index d2c201c54..35dfb7bbe 100644 --- a/database/entity/User.ts +++ b/database/entity/User.ts @@ -1 +1 @@ -export { User } from './0023-users_disabled_soft_delete/User' +export { User } from './0033-add_referrer_id/User' From 5eccddec05bb695168f041c981cbb0e1a78cf8d3 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 21 Mar 2022 17:28:48 +0100 Subject: [PATCH 4/4] test that referrerId is present --- backend/src/graphql/resolver/UserResolver.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/graphql/resolver/UserResolver.test.ts b/backend/src/graphql/resolver/UserResolver.test.ts index 66e435207..f873fd694 100644 --- a/backend/src/graphql/resolver/UserResolver.test.ts +++ b/backend/src/graphql/resolver/UserResolver.test.ts @@ -101,6 +101,7 @@ describe('UserResolver', () => { language: 'de', deletedAt: null, publisherId: 1234, + referrerId: null, }, ]) })