saito.k f553bfc95b Merged PR 501: strictNullChecks修正①(accounts,auth,Repositoiesのaccounts,common)
## 概要
[Task2835: 修正①(accounts,auth,Repositoiesのaccounts,common)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2835)

- features
  - accounts
  - auth
- common
- repositories
  - accounts
- 各entity
  - Nullableの項目の`@Column`デコレータに`type`を追加しないとTypeORMがエラーになりテストが通らないので追加
    - https://qiita.com/maruware/items/08c9ad594e14e4ea1497#%E5%95%8F%E9%A1%8C

## レビューポイント
- コメントとして記載

## UIの変更
- Before/Afterのスクショなど
- スクショ置き場

## 動作確認状況
- ローカルで確認、develop環境で確認など

## 補足
- レビュー完了後、TODOコメント(strictNullChecks対応)は削除します
2023-10-19 07:13:56 +00:00

171 lines
3.6 KiB
TypeScript

import { Account } from '../../../repositories/accounts/entity/account.entity';
import {
Entity,
Column,
PrimaryGeneratedColumn,
CreateDateColumn,
UpdateDateColumn,
ManyToOne,
JoinColumn,
OneToOne,
OneToMany,
PrimaryColumn,
} from 'typeorm';
import { License } from '../../licenses/entity/license.entity';
import { UserGroupMember } from '../../user_groups/entity/user_group_member.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;
@OneToMany(() => UserGroupMember, (userGroupMember) => userGroupMember.user)
userGroupMembers: UserGroupMember[] | null;
}
@Entity({ name: 'users_archive' })
export class UserArchive {
@PrimaryColumn()
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()
email_verified: boolean;
@Column()
auto_renew: boolean;
@Column()
license_alert: boolean;
@Column()
notification: boolean;
@Column()
encryption: boolean;
@Column()
prompt: boolean;
@Column({ nullable: true, type: 'datetime' })
deleted_at: Date | null;
@Column({ nullable: true, type: 'datetime' })
created_by: string | null;
@Column()
created_at: Date;
@Column({ nullable: true, type: 'datetime' })
updated_by: string | null;
@Column()
updated_at: Date;
@CreateDateColumn({
default: () => "datetime('now', 'localtime')",
type: 'datetime',
}) // defaultはSQLite用設定値.本番用は別途migrationで設定
archived_at: Date;
}
export type newUser = Omit<
User,
| 'id'
| 'deleted_at'
| 'created_at'
| 'updated_at'
| 'updated_by'
| 'created_by'
| 'account'
| 'license'
| 'userGroupMembers'
| 'email_verified'
>;