import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, ManyToMany, JoinTable, } from 'typeorm'; import { Role } from '../../auth/entities/role.entity'; @Entity('users') export class User { @PrimaryGeneratedColumn() id!: number; @Column({ length: 50, unique: true }) username!: string; @Column({ length: 100, unique: true }) email!: string; @Column({ name: 'password_hash', length: 255 }) passwordHash!: string; @Column({ name: 'first_name', length: 100 }) firstName!: string; @Column({ name: 'last_name', length: 100 }) lastName!: string; @Column({ name: 'is_active', default: true }) isActive!: boolean; @ManyToMany(() => Role) @JoinTable({ name: 'user_roles', joinColumn: { name: 'user_id', referencedColumnName: 'id' }, inverseJoinColumn: { name: 'role_id', referencedColumnName: 'id' }, }) roles!: Role[]; @CreateDateColumn({ name: 'created_at' }) createdAt!: Date; @UpdateDateColumn({ name: 'updated_at' }) updatedAt!: Date; @DeleteDateColumn({ name: 'deleted_at' }) deletedAt!: Date; }