fileserver/src/entities.ts

96 lines
1.6 KiB
TypeScript
Raw Normal View History

2022-08-17 21:59:51 +02:00
import {
Entity,
Column,
PrimaryGeneratedColumn,
ManyToOne,
OneToMany,
OneToOne
} from 'typeorm';
2022-08-25 23:42:12 +02:00
import { UserRole } from '../dto';
2022-08-17 21:59:51 +02:00
2022-08-24 10:41:56 +02:00
export enum tfaTypes {
NONE = 0,
EMAIL = 1,
TOTP = 2
}
2022-08-17 21:59:51 +02:00
@Entity()
export class INode {
@PrimaryGeneratedColumn()
id: number;
@Column()
isFile: boolean;
@Column()
name: string;
@Column({ nullable: true })
size: number;
@Column({ nullable: true })
parentId: number;
@ManyToOne(() => INode, (node) => node.children)
parent: Promise<INode>;
@OneToMany(() => INode, (node) => node.parent)
children: Promise<INode[]>;
@Column({ nullable: true })
ownerId: number;
@ManyToOne(() => User)
owner: Promise<User>;
}
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
2022-08-24 21:27:04 +02:00
@Column({ default: false })
isGitlabUser: boolean;
2022-08-17 21:59:51 +02:00
@Column()
name: string;
@Column()
password: string;
@Column({
type: 'int',
default: UserRole.DISABLED,
transformer: {
from: (db: number): UserRole => db,
to: (role: UserRole): number => role
}
})
role: UserRole;
@Column({ nullable: true })
rootId: number;
@OneToOne(() => INode)
root: Promise<INode>;
2022-08-24 10:41:56 +02:00
@Column({
type: 'int',
default: tfaTypes.NONE,
transformer: {
from: (db: number): tfaTypes => db,
to: (type: tfaTypes): number => type
}
})
tfaType: tfaTypes;
@Column({ nullable: true })
tfaSecret: string;
2022-08-24 21:27:04 +02:00
@Column({ nullable: true })
gitlabAT: string;
@Column({ nullable: true })
gitlabRT: string;
2022-08-17 21:59:51 +02:00
}
@Entity()
export class JWTToken {
@PrimaryGeneratedColumn()
id: number;
@Column()
ownerId: number;
@Column({ nullable: true })
exp: number;
}