import { Table, Column, Model, Default, DataType, HasMany, Unique, ForeignKey } from 'sequelize-typescript'; import { ApiProperty } from '@nestjs/swagger'; import UserAdditionalDetail from './user-additional-details/user-additional-details.entity'; import UserType from './user-types/user-type.entity'; @Table({ tableName: 'users' }) export class User extends Model { @ApiProperty({ type: String }) @Unique(true) @Column({ type: DataType.TEXT }) email: string; @ApiProperty({ type: String }) @Column({ type: DataType.TEXT }) name: string; @ApiProperty({ type: String }) @Column({ type: DataType.TEXT }) password: string; @ApiProperty({ type: String }) @ForeignKey(() => UserType) @Column({ type: DataType.TEXT }) userTypeCode: string; @ApiProperty({ type: String }) @Column({ type: DataType.TEXT }) primaryRole: string; @ApiProperty({ type: String }) @Column({ type: DataType.TEXT }) instituteCode: string; @ApiProperty({ type: String }) @Column({ type: DataType.TEXT }) status: string; @ApiProperty({ type: Date, default: new Date() }) @Default(new Date()) @Column({ type: DataType.DATEONLY }) validFrom: Date; @ApiProperty({ type: Date, default: new Date("2070-12-31") }) @Default(new Date("2070-12-31")) @Column({ type: DataType.DATEONLY }) validTill: Date; @ApiProperty({ type: String }) @Column({ type: DataType.TEXT }) createBy: string; @ApiProperty({ type: String }) @Column({ type: DataType.TEXT }) modifiedBy: string; @ApiProperty({ type: Date }) @Column({ type: DataType.DATE }) createdAt: Date; @ApiProperty({ type: Date }) @Column({ type: DataType.DATE }) updatedAt: Date; @ApiProperty({ type: Date }) @Column({ type: DataType.DATE }) deletedAt: Date; @ApiProperty({ type: Number }) @Column({ type: DataType.NUMBER }) version: number; @ApiProperty({ type: [UserAdditionalDetail] }) @HasMany(() => UserAdditionalDetail) additionalDetails: UserAdditionalDetail[]; }