75 lines
1.2 KiB
TypeScript
75 lines
1.2 KiB
TypeScript
|
import {
|
||
|
Entity,
|
||
|
Column,
|
||
|
PrimaryGeneratedColumn,
|
||
|
ManyToOne,
|
||
|
OneToMany,
|
||
|
OneToOne
|
||
|
} from 'typeorm';
|
||
|
|
||
|
export enum UserRole {
|
||
|
ADMIN = 2,
|
||
|
USER = 1,
|
||
|
DISABLED = 0
|
||
|
}
|
||
|
|
||
|
@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;
|
||
|
@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>;
|
||
|
}
|
||
|
|
||
|
@Entity()
|
||
|
export class JWTToken {
|
||
|
@PrimaryGeneratedColumn()
|
||
|
id: number;
|
||
|
|
||
|
@Column()
|
||
|
ownerId: number;
|
||
|
|
||
|
@Column({ nullable: true })
|
||
|
exp: number;
|
||
|
}
|