Files
dsc-api/src/modules/users/entities/user.entity.ts
T
2025-02-03 15:30:49 +03:30

66 lines
2.2 KiB
TypeScript

import { Exclude } from "class-transformer";
import { Column, Entity, JoinTable, ManyToMany, ManyToOne, OneToMany } from "typeorm";
import { Role } from "./role.entity";
import { UserGroup } from "./user-group.entity";
import { BaseEntity } from "../../../common/entities/base.entity";
import { UserAnnouncement } from "../../announcements/entities/user-announcement.entity";
import { Criticism } from "../../criticisms/entities/criticism.entity";
import { DanakService } from "../../danak-services/entities/danak-service.entity";
import { UserSetting } from "../../settings/entities/user-setting.entity";
import { TicketMessage } from "../../tickets/entities/ticket-message.entity";
import { Ticket } from "../../tickets/entities/ticket.entity";
@Entity()
export class User extends BaseEntity {
@Column({ type: "varchar", length: 150, nullable: true })
email: string;
@Column({ type: "varchar", length: 11, unique: true, nullable: false })
phone: string;
@Column({ type: "varchar", length: 50, unique: true, nullable: true })
userName: string;
@Exclude()
@Column({ type: "varchar", length: 150 })
password: string;
@Column({ type: "varchar", length: 150 })
firstName: string;
@Column({ type: "varchar", length: 200 })
lastName: string;
@Column({ type: "varchar", length: 12, nullable: true })
birthDate: string;
@Column({ type: "varchar", length: 100, unique: true, nullable: false })
nationalCode: string;
@ManyToOne(() => Role, { eager: true, onDelete: "RESTRICT", nullable: false })
role: Role;
@OneToMany(() => Ticket, (ticket) => ticket.user)
tickets: Ticket[];
@OneToMany(() => TicketMessage, (ticketMessage) => ticketMessage.author)
ticketMessage: TicketMessage[];
@ManyToMany(() => UserGroup, (group) => group.users)
groups: UserGroup[];
@OneToMany(() => Criticism, (criticism) => criticism.user)
criticisms: Criticism[];
@ManyToMany(() => DanakService, (danakService) => danakService.users)
@JoinTable()
danakServices: DanakService[];
@OneToMany(() => UserAnnouncement, (userAnnouncement) => userAnnouncement.user)
userAnnouncements: UserAnnouncement[];
@OneToMany(() => UserSetting, (settings) => settings.user, { nullable: false })
settings: UserSetting;
}