## 概要 [Task3294: ライセンス自動割り当て処理実装(メイン処理)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3294) ライセンス自動割り当て処理を実装しました。 ラフスケッチでは1回のクエリでアカウント・ユーザーを両方取得する設計でしたが、実装難度・可読性の面から、 アカウントとユーザーを別々に取得するよう変更しています。 ## レビューポイント 処理内容に過不足がないか。 DBからのデータ取得時の条件に過不足がないか。 ## UIの変更 なし ## 動作確認状況 ローカルでUT,動作確認済み ## 補足 なし
88 lines
2.0 KiB
TypeScript
88 lines
2.0 KiB
TypeScript
import {
|
|
Entity,
|
|
Column,
|
|
PrimaryGeneratedColumn,
|
|
CreateDateColumn,
|
|
UpdateDateColumn,
|
|
OneToOne,
|
|
JoinColumn,
|
|
ManyToOne,
|
|
} from "typeorm";
|
|
import { License } from "./license.entity";
|
|
import { Account } from "./account.entity";
|
|
|
|
@Entity({ name: "users" })
|
|
export class User {
|
|
@PrimaryGeneratedColumn()
|
|
id: number;
|
|
|
|
@Column()
|
|
external_id: string;
|
|
|
|
@Column()
|
|
account_id: number;
|
|
|
|
@Column()
|
|
role: string;
|
|
|
|
@Column({ nullable: true, type: "varchar" })
|
|
author_id: string | null;
|
|
|
|
@Column({ nullable: true, type: "varchar" })
|
|
accepted_eula_version: string | null;
|
|
|
|
@Column({ nullable: true, type: "varchar" })
|
|
accepted_dpa_version: string | null;
|
|
|
|
@Column({ default: false })
|
|
email_verified: boolean;
|
|
|
|
@Column({ default: true })
|
|
auto_renew: boolean;
|
|
|
|
@Column({ default: true })
|
|
license_alert: boolean;
|
|
|
|
@Column({ default: true })
|
|
notification: boolean;
|
|
|
|
@Column({ default: false })
|
|
encryption: boolean;
|
|
|
|
@Column({ nullable: true, type: "varchar" })
|
|
encryption_password: string | null;
|
|
|
|
@Column({ default: false })
|
|
prompt: boolean;
|
|
|
|
@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;
|
|
|
|
@ManyToOne(() => Account, (account) => account.user, {
|
|
createForeignKeyConstraints: false,
|
|
}) // createForeignKeyConstraintsはSQLite用設定値.本番用は別途migrationで設定
|
|
@JoinColumn({ name: "account_id" })
|
|
account: Account | null;
|
|
|
|
@OneToOne(() => License, (license) => license.user)
|
|
license: License | null;
|
|
}
|