From 772bf82000630bb9d9ac22fa3436e9197c0ecad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 1 Jun 2022 11:09:21 +0200 Subject: [PATCH 1/6] Fix linting in database README.md --- database/README.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/database/README.md b/database/README.md index d6cf84518..e951f4530 100644 --- a/database/README.md +++ b/database/README.md @@ -1,32 +1,39 @@ # database ## Project setup -``` + +```bash yarn install ``` ## Upgrade migrations production -``` + +```bash yarn up ``` ## Upgrade migrations development -``` + +```bash yarn dev_up ``` ## Downgrade migrations production -``` + +```bash yarn down ``` ## Downgrade migrations development -``` + +```bash yarn dev_down ``` ## Reset database -``` + +```bash yarn dev_reset ``` + Runs all down migrations and after this all up migrations. From dbc98e8490daf9fc11c38cb8e931912e0fe028b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 1 Jun 2022 12:03:42 +0200 Subject: [PATCH 2/6] Remove 'user_setting' table from db - Add migration 0037-drop_server_user_table.ts --- .../migrations/0037-drop_server_user_table.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 database/migrations/0037-drop_server_user_table.ts diff --git a/database/migrations/0037-drop_server_user_table.ts b/database/migrations/0037-drop_server_user_table.ts new file mode 100644 index 000000000..50a78e104 --- /dev/null +++ b/database/migrations/0037-drop_server_user_table.ts @@ -0,0 +1,19 @@ +/* MIGRATION DROP user_setting TABLE */ + +/* 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('DROP TABLE `user_setting`;') +} + +export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn(` + CREATE TABLE IF NOT EXISTS \`user_setting\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`userId\` int(11) NOT NULL, + \`key\` varchar(255) NOT NULL, + \`value\` varchar(255) NOT NULL, + PRIMARY KEY (\`id\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;`) +} From 71595428b3567f6e71fbfccfa343113efb8d2400 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 1 Jun 2022 12:39:57 +0200 Subject: [PATCH 3/6] Set DB_VERSION to '0037-drop_server_user_table.ts' --- 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 28318ed6b..2015eb6cc 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -10,7 +10,7 @@ Decimal.set({ }) const constants = { - DB_VERSION: '0036-unique_previous_in_transactions', + DB_VERSION: '0037-drop_server_user_table.ts', 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 d958cfdfde0d045e1d8e92b1753c8e70455bcfd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 7 Jun 2022 10:33:46 +0200 Subject: [PATCH 4/6] Fix DB_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 2015eb6cc..1adc68981 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -10,7 +10,7 @@ Decimal.set({ }) const constants = { - DB_VERSION: '0037-drop_server_user_table.ts', + DB_VERSION: '0037-drop_server_user_table', 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 6abb399ab9398e441b196d97de499701ee41e674 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 7 Jun 2022 11:33:47 +0200 Subject: [PATCH 5/6] Removed UserSetting from backend --- .../repository/UserSettingRepository.ts | 25 ------- backend/src/util/communityUser.ts | 1 - database/entity/0002-add_settings/User.ts | 2 +- .../entity/0002-add_settings/UserSetting.ts | 2 +- .../entity/0017-combine_user_tables/User.ts | 2 +- .../User.ts | 2 +- .../User.ts | 2 +- .../0020-rename_and_clean_state_users/User.ts | 2 +- .../0023-users_disabled_soft_delete/User.ts | 2 +- database/entity/0033-add_referrer_id/User.ts | 2 +- .../0034-drop_server_user_table/User.ts | 2 +- .../0037-drop_server_user_table/User.ts | 70 +++++++++++++++++++ database/entity/User.ts | 2 +- database/entity/UserSetting.ts | 1 - database/entity/index.ts | 2 - 15 files changed, 80 insertions(+), 39 deletions(-) delete mode 100644 backend/src/typeorm/repository/UserSettingRepository.ts create mode 100644 database/entity/0037-drop_server_user_table/User.ts delete mode 100644 database/entity/UserSetting.ts diff --git a/backend/src/typeorm/repository/UserSettingRepository.ts b/backend/src/typeorm/repository/UserSettingRepository.ts deleted file mode 100644 index f911cfd1a..000000000 --- a/backend/src/typeorm/repository/UserSettingRepository.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { EntityRepository, Repository } from '@dbTools/typeorm' -import { UserSetting } from '@entity/UserSetting' -import { isStringBoolean } from '@/util/validate' - -@EntityRepository(UserSetting) -export class UserSettingRepository extends Repository { - async setOrUpdate(userId: number, value: string): Promise { - let entity = await this.findOne({ userId: userId }) - - if (!entity) { - entity = new UserSetting() - entity.userId = userId - } - entity.value = value - return this.save(entity) - } - - async readBoolean(userId: number): Promise { - const entity = await this.findOne({ userId: userId }) - if (!entity || !isStringBoolean(entity.value)) { - return true - } - return entity.value.toLowerCase() === 'true' - } -} diff --git a/backend/src/util/communityUser.ts b/backend/src/util/communityUser.ts index 0d0d12f6c..1a84c2cdf 100644 --- a/backend/src/util/communityUser.ts +++ b/backend/src/util/communityUser.ts @@ -20,7 +20,6 @@ const communityDbUser: dbUser = { isAdmin: null, publisherId: 0, passphrase: '', - settings: [], hasId: function (): boolean { throw new Error('Function not implemented.') }, diff --git a/database/entity/0002-add_settings/User.ts b/database/entity/0002-add_settings/User.ts index a756cbbd5..4f333fd50 100644 --- a/database/entity/0002-add_settings/User.ts +++ b/database/entity/0002-add_settings/User.ts @@ -1,5 +1,5 @@ import { BaseEntity, Entity, PrimaryGeneratedColumn, Column, OneToMany } from 'typeorm' -import { UserSetting } from '../UserSetting' +import { UserSetting } from '../0002-add_settings/UserSetting' // Moriz: I do not like the idea of having two user tables @Entity('state_users', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) diff --git a/database/entity/0002-add_settings/UserSetting.ts b/database/entity/0002-add_settings/UserSetting.ts index 006d63e3e..6103f67b5 100644 --- a/database/entity/0002-add_settings/UserSetting.ts +++ b/database/entity/0002-add_settings/UserSetting.ts @@ -1,5 +1,5 @@ import { BaseEntity, Entity, PrimaryGeneratedColumn, Column, ManyToOne } from 'typeorm' -import { User } from '../User' +import { User } from '../0034-drop_server_user_table/User' // Wolle: last fitting one or old was correct? @Entity() export class UserSetting extends BaseEntity { diff --git a/database/entity/0017-combine_user_tables/User.ts b/database/entity/0017-combine_user_tables/User.ts index a9bf29d24..7281c4773 100644 --- a/database/entity/0017-combine_user_tables/User.ts +++ b/database/entity/0017-combine_user_tables/User.ts @@ -1,5 +1,5 @@ import { BaseEntity, Entity, PrimaryGeneratedColumn, Column, OneToMany } from 'typeorm' -import { UserSetting } from '../UserSetting' +import { UserSetting } from '../0002-add_settings/UserSetting' @Entity('state_users', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) export class User extends BaseEntity { diff --git a/database/entity/0018-combine_login_user_backups_and_user_table/User.ts b/database/entity/0018-combine_login_user_backups_and_user_table/User.ts index 2ae351e47..347f51a8d 100644 --- a/database/entity/0018-combine_login_user_backups_and_user_table/User.ts +++ b/database/entity/0018-combine_login_user_backups_and_user_table/User.ts @@ -1,5 +1,5 @@ import { BaseEntity, Entity, PrimaryGeneratedColumn, Column, OneToMany } from 'typeorm' -import { UserSetting } from '../UserSetting' +import { UserSetting } from '../0002-add_settings/UserSetting' @Entity('state_users', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) export class User extends BaseEntity { diff --git a/database/entity/0019-replace_login_user_id_with_state_user_id/User.ts b/database/entity/0019-replace_login_user_id_with_state_user_id/User.ts index b469a55a7..8c00ec5c3 100644 --- a/database/entity/0019-replace_login_user_id_with_state_user_id/User.ts +++ b/database/entity/0019-replace_login_user_id_with_state_user_id/User.ts @@ -1,5 +1,5 @@ import { BaseEntity, Entity, PrimaryGeneratedColumn, Column, OneToMany } from 'typeorm' -import { UserSetting } from '../UserSetting' +import { UserSetting } from '../0002-add_settings/UserSetting' @Entity('state_users', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) export class User extends BaseEntity { diff --git a/database/entity/0020-rename_and_clean_state_users/User.ts b/database/entity/0020-rename_and_clean_state_users/User.ts index 3d3b4d7b1..5501bccba 100644 --- a/database/entity/0020-rename_and_clean_state_users/User.ts +++ b/database/entity/0020-rename_and_clean_state_users/User.ts @@ -1,5 +1,5 @@ import { BaseEntity, Entity, PrimaryGeneratedColumn, Column, OneToMany } from 'typeorm' -import { UserSetting } from '../UserSetting' +import { UserSetting } from '../0002-add_settings/UserSetting' @Entity('users', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) export class User extends BaseEntity { diff --git a/database/entity/0023-users_disabled_soft_delete/User.ts b/database/entity/0023-users_disabled_soft_delete/User.ts index 95fe1b3f7..950e74aeb 100644 --- a/database/entity/0023-users_disabled_soft_delete/User.ts +++ b/database/entity/0023-users_disabled_soft_delete/User.ts @@ -6,7 +6,7 @@ import { OneToMany, DeleteDateColumn, } from 'typeorm' -import { UserSetting } from '../UserSetting' +import { UserSetting } from '../0002-add_settings/UserSetting' @Entity('users', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) export class User extends BaseEntity { diff --git a/database/entity/0033-add_referrer_id/User.ts b/database/entity/0033-add_referrer_id/User.ts index 48c804b63..353c6a830 100644 --- a/database/entity/0033-add_referrer_id/User.ts +++ b/database/entity/0033-add_referrer_id/User.ts @@ -6,7 +6,7 @@ import { OneToMany, DeleteDateColumn, } from 'typeorm' -import { UserSetting } from '../UserSetting' +import { UserSetting } from '../0002-add_settings/UserSetting' @Entity('users', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) export class User extends BaseEntity { diff --git a/database/entity/0034-drop_server_user_table/User.ts b/database/entity/0034-drop_server_user_table/User.ts index 1f56d13d2..82fd72009 100644 --- a/database/entity/0034-drop_server_user_table/User.ts +++ b/database/entity/0034-drop_server_user_table/User.ts @@ -6,7 +6,7 @@ import { OneToMany, DeleteDateColumn, } from 'typeorm' -import { UserSetting } from '../UserSetting' +import { UserSetting } from '../0002-add_settings/UserSetting' @Entity('users', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) export class User extends BaseEntity { diff --git a/database/entity/0037-drop_server_user_table/User.ts b/database/entity/0037-drop_server_user_table/User.ts new file mode 100644 index 000000000..528cef32b --- /dev/null +++ b/database/entity/0037-drop_server_user_table/User.ts @@ -0,0 +1,70 @@ +import { BaseEntity, Entity, PrimaryGeneratedColumn, Column, DeleteDateColumn } from 'typeorm' + +@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 +} diff --git a/database/entity/User.ts b/database/entity/User.ts index 4cd68174c..6983f293b 100644 --- a/database/entity/User.ts +++ b/database/entity/User.ts @@ -1 +1 @@ -export { User } from './0034-drop_server_user_table/User' +export { User } from './0037-drop_server_user_table/User' diff --git a/database/entity/UserSetting.ts b/database/entity/UserSetting.ts deleted file mode 100644 index 38da380f9..000000000 --- a/database/entity/UserSetting.ts +++ /dev/null @@ -1 +0,0 @@ -export { UserSetting } from './0002-add_settings/UserSetting' diff --git a/database/entity/index.ts b/database/entity/index.ts index 542333755..46d9ef31a 100644 --- a/database/entity/index.ts +++ b/database/entity/index.ts @@ -4,7 +4,6 @@ import { Migration } from './Migration' import { Transaction } from './Transaction' import { TransactionLink } from './TransactionLink' import { User } from './User' -import { UserSetting } from './UserSetting' import { AdminPendingCreation } from './AdminPendingCreation' export const entities = [ @@ -15,5 +14,4 @@ export const entities = [ Transaction, TransactionLink, User, - UserSetting, ] From 338c1591cb1cd5954e5665ac45d25fd8384dbb16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 7 Jun 2022 11:45:07 +0200 Subject: [PATCH 6/6] Cleanup --- database/entity/0002-add_settings/UserSetting.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/entity/0002-add_settings/UserSetting.ts b/database/entity/0002-add_settings/UserSetting.ts index 6103f67b5..9da036954 100644 --- a/database/entity/0002-add_settings/UserSetting.ts +++ b/database/entity/0002-add_settings/UserSetting.ts @@ -1,5 +1,5 @@ import { BaseEntity, Entity, PrimaryGeneratedColumn, Column, ManyToOne } from 'typeorm' -import { User } from '../0034-drop_server_user_table/User' // Wolle: last fitting one or old was correct? +import { User } from '../0034-drop_server_user_table/User' @Entity() export class UserSetting extends BaseEntity {