generated from bastian/boilerplate
Initial commit
This commit is contained in:
70
apps/backend/src/users/entities/user.entity.ts
Normal file
70
apps/backend/src/users/entities/user.entity.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
Index,
|
||||
JoinTable,
|
||||
ManyToMany,
|
||||
OneToMany,
|
||||
OneToOne,
|
||||
PrimaryGeneratedColumn,
|
||||
Unique,
|
||||
UpdateDateColumn,
|
||||
} from 'typeorm';
|
||||
import { RoleEntity } from '../../roles/entities/role.entity';
|
||||
import { SessionEntity } from '../../sessions/entities/session.entity';
|
||||
import { UserSettingsEntity } from './user-settings.entity';
|
||||
|
||||
@Entity('users')
|
||||
@Unique('uq_users_issuer_subject', ['issuer', 'subject'])
|
||||
export class UserEntity {
|
||||
@PrimaryGeneratedColumn('uuid')
|
||||
id!: string;
|
||||
|
||||
@Index('idx_users_issuer')
|
||||
@Column({ type: 'varchar', length: 255 })
|
||||
issuer!: string;
|
||||
|
||||
@Column({ type: 'varchar', length: 255 })
|
||||
subject!: string;
|
||||
|
||||
@Column({ type: 'varchar', length: 255 })
|
||||
name!: string;
|
||||
|
||||
@Column({ type: 'varchar', length: 320, nullable: true })
|
||||
email!: string | null;
|
||||
|
||||
@Column({ type: 'boolean', default: true })
|
||||
active!: boolean;
|
||||
|
||||
@Column({
|
||||
name: 'last_login_at',
|
||||
type: 'datetime',
|
||||
precision: 3,
|
||||
nullable: true,
|
||||
})
|
||||
lastLoginAt!: Date | null;
|
||||
|
||||
@ManyToMany(() => RoleEntity, (role) => role.users, { eager: true })
|
||||
@JoinTable({
|
||||
name: 'user_roles',
|
||||
joinColumn: { name: 'user_id', referencedColumnName: 'id' },
|
||||
inverseJoinColumn: { name: 'role_id', referencedColumnName: 'id' },
|
||||
})
|
||||
roles!: RoleEntity[];
|
||||
|
||||
@OneToMany(() => SessionEntity, (session) => session.user)
|
||||
sessions!: SessionEntity[];
|
||||
|
||||
@OneToOne(() => UserSettingsEntity, (settings) => settings.user, {
|
||||
cascade: true,
|
||||
eager: true,
|
||||
})
|
||||
settings!: UserSettingsEntity;
|
||||
|
||||
@CreateDateColumn({ name: 'created_at', type: 'datetime', precision: 3 })
|
||||
createdAt!: Date;
|
||||
|
||||
@UpdateDateColumn({ name: 'updated_at', type: 'datetime', precision: 3 })
|
||||
updatedAt!: Date;
|
||||
}
|
||||
Reference in New Issue
Block a user