SAITO-PC-3\saito.k b24059b538 Merge branch 'develop' into ccb
# Conflicts:
#	dictation_client/src/translation/de.json
#	dictation_client/src/translation/en.json
#	dictation_client/src/translation/es.json
#	dictation_client/src/translation/fr.json
#	dictation_function/src/test/common/utility.ts
#	dictation_server/src/features/files/test/utility.ts
2024-04-18 09:57:37 +09:00

169 lines
4.5 KiB
TypeScript

import { bigintTransformer } from "../common/entity";
import { User, UserArchive } from "./user.entity";
import { License, LicenseArchive } from "./license.entity";
import {
Entity,
Column,
PrimaryGeneratedColumn,
CreateDateColumn,
UpdateDateColumn,
OneToOne,
JoinColumn,
OneToMany,
} from "typeorm";
import { FILE_RETENTION_DAYS_DEFAULT } from "../constants";
@Entity({ name: "accounts" })
export class Account {
@PrimaryGeneratedColumn()
id: number;
@Column({ nullable: true, type: "bigint", transformer: bigintTransformer })
parent_account_id: number | null;
@Column()
tier: number;
@Column()
country: string;
@Column({ default: false })
delegation_permission: boolean;
@Column({ default: false })
locked: boolean;
@Column()
company_name: string;
@Column({ default: false })
verified: boolean;
@Column({ nullable: true, type: "bigint", transformer: bigintTransformer })
primary_admin_user_id: number | null;
@Column({ nullable: true, type: "bigint", transformer: bigintTransformer })
secondary_admin_user_id: number | null;
@Column({ nullable: true, type: "bigint", transformer: bigintTransformer })
active_worktype_id: number | null;
@Column({ default: false })
auto_file_delete: boolean;
@Column({ default: FILE_RETENTION_DAYS_DEFAULT })
file_retention_days: number;
@Column({ nullable: true, type: "datetime" })
deleted_at: Date | null;
@Column({ nullable: true, type: "varchar" })
created_by: string | null;
@CreateDateColumn({
default: () => "datetime('now', 'localtime')",
type: "datetime",
}) // defaultはSQLite用設定値.本番用は別途migrationで設定
created_at: Date;
@Column({ nullable: true, type: "varchar"})
updated_by: string | null;
@UpdateDateColumn({
default: () => "datetime('now', 'localtime')",
type: "datetime",
}) // defaultはSQLite用設定値.本番用は別途migrationで設定
updated_at: Date;
@OneToOne(() => User, (user) => user.id)
@JoinColumn({ name: "primary_admin_user_id" })
primaryAdminUser: User | null;
@OneToOne(() => User, (user) => user.id)
@JoinColumn({ name: "secondary_admin_user_id" })
secondaryAdminUser: User | null;
@OneToMany(() => User, (user) => user.account)
@JoinColumn({ name: "id" })
user: User[] | null;
@OneToMany(() => UserArchive, (userArchive) => userArchive.account)
@JoinColumn({ name: "id" })
userArchive: UserArchive[] | null;
@OneToMany(() => License, (license) => license.account)
licenses: License[] | null;
}
@Entity({ name: "accounts_archive" })
export class AccountArchive {
@PrimaryGeneratedColumn()
id: number;
@Column({ nullable: true, type: "bigint", transformer: bigintTransformer })
parent_account_id: number | null;
@Column()
tier: number;
@Column()
country: string;
@Column({ default: false })
delegation_permission: boolean;
@Column({ default: false })
locked: boolean;
@Column({ default: false })
verified: boolean;
@Column({ nullable: true, type: "bigint", transformer: bigintTransformer })
primary_admin_user_id: number | null;
@Column({ nullable: true, type: "bigint", transformer: bigintTransformer })
secondary_admin_user_id: number | null;
@Column({ nullable: true, type: "bigint", transformer: bigintTransformer })
active_worktype_id: number | null;
@Column({ nullable: true, type: "datetime" })
deleted_at: Date | null;
@Column({ nullable: true, type: "datetime" })
created_by: string | null;
@CreateDateColumn({
default: () => "datetime('now', 'localtime')",
type: "datetime",
}) // defaultはSQLite用設定値.本番用は別途migrationで設定
created_at: Date;
@Column({ nullable: true, type: "datetime" })
updated_by: string | null;
@UpdateDateColumn({
default: () => "datetime('now', 'localtime')",
type: "datetime",
}) // defaultはSQLite用設定値.本番用は別途migrationで設定
updated_at: Date;
@OneToOne(() => UserArchive, (userArchive) => userArchive.id)
@JoinColumn({ name: "primary_admin_user_id" })
primaryAdminUser: UserArchive | null;
@OneToOne(() => UserArchive, (userArchive) => userArchive.id)
@JoinColumn({ name: "secondary_admin_user_id" })
secondaryAdminUser: UserArchive | null;
@OneToMany(() => UserArchive, (userArchive) => userArchive.account)
@JoinColumn({ name: "id" })
userArchive: UserArchive[] | null;
@OneToMany(
() => LicenseArchive,
(licenseArchive) => licenseArchive.accountArchive
)
licensesArchive: LicenseArchive[] | null;
}