From 30e94be1ec4b066305813f7321102001be5e5e88 Mon Sep 17 00:00:00 2001 From: Claus-Peter Huebner Date: Wed, 14 Jun 2023 02:01:10 +0200 Subject: [PATCH] concerned entities --- .../entity/0067-add_user_roles_table/User.ts | 120 ++++++++++++++++++ .../0067-add_user_roles_table/UserRole.ts | 19 +++ database/entity/User.ts | 2 +- database/entity/UserRole.ts | 1 + 4 files changed, 141 insertions(+), 1 deletion(-) create mode 100644 database/entity/0067-add_user_roles_table/User.ts create mode 100644 database/entity/0067-add_user_roles_table/UserRole.ts create mode 100644 database/entity/UserRole.ts diff --git a/database/entity/0067-add_user_roles_table/User.ts b/database/entity/0067-add_user_roles_table/User.ts new file mode 100644 index 000000000..57e6e75db --- /dev/null +++ b/database/entity/0067-add_user_roles_table/User.ts @@ -0,0 +1,120 @@ +import { + BaseEntity, + Entity, + PrimaryGeneratedColumn, + Column, + DeleteDateColumn, + OneToMany, + JoinColumn, + OneToOne, +} from 'typeorm' +import { Contribution } from '../Contribution' +import { ContributionMessage } from '../ContributionMessage' +import { UserContact } from '../UserContact' +import { UserRole } from './UserRole' + +@Entity('users', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) +export class User extends BaseEntity { + @PrimaryGeneratedColumn('increment', { unsigned: true }) + id: number + + @Column({ + name: 'gradido_id', + length: 36, + nullable: false, + collation: 'utf8mb4_unicode_ci', + }) + gradidoID: string + + @Column({ + name: 'alias', + length: 20, + nullable: true, + default: null, + collation: 'utf8mb4_unicode_ci', + }) + alias: string + + @OneToOne(() => UserContact, (emailContact: UserContact) => emailContact.user) + @JoinColumn({ name: 'email_id' }) + emailContact: UserContact + + @Column({ name: 'email_id', type: 'int', unsigned: true, nullable: true, default: null }) + emailId: number | null + + @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 + + @Column({ name: 'created_at', default: () => 'CURRENT_TIMESTAMP', nullable: false }) + createdAt: Date + + @DeleteDateColumn({ name: 'deleted_at', nullable: true }) + deletedAt: Date | null + + @Column({ type: 'bigint', default: 0, unsigned: true }) + password: BigInt + + @Column({ + name: 'password_encryption_type', + type: 'int', + unsigned: true, + nullable: false, + default: 0, + }) + passwordEncryptionType: number + + @Column({ length: 4, default: 'de', collation: 'utf8mb4_unicode_ci', nullable: false }) + language: string + + @Column({ type: 'bool', default: false }) + hideAmountGDD: boolean + + @Column({ type: 'bool', default: false }) + hideAmountGDT: boolean + + @OneToOne(() => UserRole, (role: UserRole) => role.userId) + @JoinColumn({ name: 'user_id' }) + userRole: UserRole + + @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 + + @OneToMany(() => Contribution, (contribution) => contribution.user) + @JoinColumn({ name: 'user_id' }) + contributions?: Contribution[] + + @OneToMany(() => ContributionMessage, (message) => message.user) + @JoinColumn({ name: 'user_id' }) + messages?: ContributionMessage[] + + @OneToMany(() => UserContact, (userContact: UserContact) => userContact.user) + @JoinColumn({ name: 'user_id' }) + userContacts?: UserContact[] +} diff --git a/database/entity/0067-add_user_roles_table/UserRole.ts b/database/entity/0067-add_user_roles_table/UserRole.ts new file mode 100644 index 000000000..eb68b6e85 --- /dev/null +++ b/database/entity/0067-add_user_roles_table/UserRole.ts @@ -0,0 +1,19 @@ +import { BaseEntity, Entity, PrimaryGeneratedColumn, Column } from 'typeorm' + +@Entity('user_roles', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' }) +export class UserRole extends BaseEntity { + @PrimaryGeneratedColumn('increment', { unsigned: true }) + id: number + + @Column({ name: 'user_id', type: 'int', unsigned: true, nullable: false }) + userId: number + + @Column({ length: 40, nullable: false, collation: 'utf8mb4_unicode_ci' }) + role: string + + @Column({ name: 'created_at', default: () => 'CURRENT_TIMESTAMP', nullable: false }) + createdAt: Date + + @Column({ name: 'updated_at', nullable: true, default: null, type: 'datetime' }) + updatedAt: Date | null +} diff --git a/database/entity/User.ts b/database/entity/User.ts index fbb65204c..71c694303 100644 --- a/database/entity/User.ts +++ b/database/entity/User.ts @@ -1 +1 @@ -export { User } from './0059-add_hide_amount_to_users/User' +export { User } from './0067-add_user_roles_table/User' diff --git a/database/entity/UserRole.ts b/database/entity/UserRole.ts new file mode 100644 index 000000000..a6dda6c54 --- /dev/null +++ b/database/entity/UserRole.ts @@ -0,0 +1 @@ +export { UserContact } from './0067-add_user_roles_table/UserRole'