aboutsummaryrefslogtreecommitdiffstats
path: root/src/file/entity/file.entity.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/file/entity/file.entity.ts')
-rw-r--r--src/file/entity/file.entity.ts47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/file/entity/file.entity.ts b/src/file/entity/file.entity.ts
new file mode 100644
index 0000000..49c0ecc
--- /dev/null
+++ b/src/file/entity/file.entity.ts
@@ -0,0 +1,47 @@
+import { nanoid } from 'nanoid';
+import { Session } from '../../session/entity/session.entity';
+import {
+ Entity,
+ Column,
+ BeforeInsert,
+ CreateDateColumn,
+ PrimaryGeneratedColumn,
+ ManyToOne,
+ Index,
+ OneToOne,
+} from 'typeorm';
+import { FilePurpose } from './purpose.entity';
+import { StoredFile } from 'src/storage/entity/stored-file.entity';
+
+@Entity()
+export class FileMetadata {
+ @PrimaryGeneratedColumn()
+ id: number;
+
+ @Index('filekey-idx')
+ @Column({ unique: true, nullable: false })
+ key: string;
+
+ @ManyToOne(() => FilePurpose, { nullable: false })
+ purpose: FilePurpose;
+
+ @CreateDateColumn()
+ creationDate: Date;
+
+ @Column()
+ validUntil: Date;
+
+ @Column({ default: false })
+ used: boolean;
+
+ @ManyToOne(() => Session, (session) => session.files, { nullable: false })
+ session: Session;
+
+ @OneToOne(() => StoredFile, (file) => file.fileMetadata, { nullable: true })
+ contents: StoredFile;
+
+ @BeforeInsert()
+ private beforeInsert() {
+ this.key = nanoid();
+ }
+}