Notifications

This commit is contained in:
Bastian Wagner
2025-01-20 15:15:41 +01:00
parent adca81444e
commit 2674ec0d24
25 changed files with 126 additions and 35 deletions

View File

@@ -0,0 +1,75 @@
import { Exclude, Transform } from 'class-transformer';
import { IsEmail } from 'class-validator';
import { IUser } from 'src/model/interface';
import {
BeforeInsert,
BeforeUpdate,
Column,
CreateDateColumn,
DeleteDateColumn,
Entity,
JoinColumn,
ManyToMany,
ManyToOne,
OneToOne,
PrimaryGeneratedColumn,
} from 'typeorm';
import { Role } from '../role.entity';
import { KeySystem } from '../system.entity';
import { SSOUser } from './sso.user.entity';
import { UserSettings } from './user.settings.entity';
@Entity()
export class User implements IUser {
@PrimaryGeneratedColumn('uuid')
id: string;
@IsEmail()
@Column({ unique: false })
username: string;
@Column({ name: 'first_name', default: '' })
firstName: string;
@Column({ name: 'last_name', default: '' })
lastName: string;
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@Column({ default: null })
lastLogin: Date;
@Exclude()
@OneToOne(() => SSOUser, (sso) => sso.user, { eager: true, cascade: true, onDelete: 'CASCADE' })
external: SSOUser;
@Column({ default: true })
isActive: boolean;
@ManyToOne(() => Role, (role) => role.user, { eager: true, onDelete: 'NO ACTION' })
@JoinColumn()
@Transform(({ value }) => value.name)
role: Role;
@ManyToMany(() => KeySystem, (system) => system.managers)
systems: KeySystem[];
@DeleteDateColumn()
deletedAt: Date;
@OneToOne(() => UserSettings, (settings) => settings.user, { cascade: true })
settings: UserSettings;
accessToken?: string;
refreshToken?: string;
@BeforeInsert()
@BeforeUpdate()
createSettings() {
if (this.settings == null) {
this.settings = {} as any;
}
}
}