53 lines
1.1 KiB
TypeScript
53 lines
1.1 KiB
TypeScript
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;
|
|
}
|