UNPKG

darkbasic-accounts-typeorm

Version:
54 lines (43 loc) 1.34 kB
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, OneToMany, AfterLoad, } from 'typeorm'; import { get, set } from 'lodash'; import { UserService } from './UserService'; import { UserEmail } from './UserEmail'; import { UserSession } from './UserSession'; @Entity() export class User { @PrimaryGeneratedColumn('uuid') public id!: string; @Column({ nullable: true }) public username!: string; @OneToMany(() => UserService, (userService) => userService.user, { eager: true }) public allServices!: UserService[]; @OneToMany(() => UserEmail, (userEmail) => userEmail.user, { eager: true }) public emails!: UserEmail[]; @OneToMany(() => UserSession, (userSession) => userSession.user, { eager: true }) public sessions!: UserSession[]; @Column({ default: false }) public deactivated!: boolean; @CreateDateColumn() public createdAt!: Date; @UpdateDateColumn() public updatedAt!: Date; public services: any = {}; @AfterLoad() public async getServices() { this.services = (this.allServices || []).reduce((acc, service) => { set(acc, service.name, [ ...[].concat(get(acc, service.name, [])), { ...(service.token ? { token: service.token } : {}), ...service.options }, ]); return acc; }, this.services); } }