darkbasic-accounts-typeorm
Version:
TypeORM adaptor for accounts
54 lines (43 loc) • 1.34 kB
text/typescript
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';
()
export class User {
('uuid')
public id!: string;
({ nullable: true })
public username!: string;
(() => UserService, (userService) => userService.user, { eager: true })
public allServices!: UserService[];
(() => UserEmail, (userEmail) => userEmail.user, { eager: true })
public emails!: UserEmail[];
(() => UserSession, (userSession) => userSession.user, { eager: true })
public sessions!: UserSession[];
({ default: false })
public deactivated!: boolean;
()
public createdAt!: Date;
()
public updatedAt!: Date;
public services: any = {};
()
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);
}
}