## 概要 [Task3880: Azure Functions実装(音声ファイル削除)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3880) - 自動音声ファイル削除を実装 - 上記のテストを実装 - テストにMySQLを使用する仕組みを導入 ## レビューポイント - テストケースは十分か - テスト内容は妥当か - developにデプロイする前の動作確認・ユニットテストとして十分か ## クエリの変更 - 新規処理のため、既存からの変更はなし ## 動作確認状況 - DBが空の状態でローカル環境で実行し、0件削除のログが出ることを確認 - 削除対象が正しいか等はdevelopでチェック予定 - 行った修正がデグレを発生させていないことを確認できるか - 既存処理の変更はなし
169 lines
4.5 KiB
TypeScript
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: "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(() => 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;
|
|
}
|