- add FileEntity, ScenarioFileEntity, ScenarioRunFileEntity with UUID-sharded disk tree - FileStorageService: write/sha256/expiry, paginated listing, dynamic cleanup cron via SchedulerRegistry - expose getScenarioFiles() and downloadFile() on ScriptContext for use in exec code - wire scenarioId, runId, fileService into ExecContextBuilder and scenario scheduler - add file upload and listing endpoints to ScenarioController - add FILES_DIR, FILE_RUN_EXPIRATION_DAYS, FILE_CLEANUP_CRON to AppConfig
34 lines
688 B
TypeScript
34 lines
688 B
TypeScript
import {
|
|
Column,
|
|
CreateDateColumn,
|
|
Entity,
|
|
JoinColumn,
|
|
ManyToOne,
|
|
PrimaryGeneratedColumn,
|
|
} from "typeorm";
|
|
import { ScenarioRunEntity } from "../scenario/scenario-run.entity";
|
|
import { FileEntity } from "./file.entity";
|
|
|
|
@Entity("scenario_run_files")
|
|
export class ScenarioRunFileEntity {
|
|
@PrimaryGeneratedColumn("uuid")
|
|
id: string;
|
|
|
|
@Column()
|
|
runId: string;
|
|
|
|
@Column()
|
|
fileId: string;
|
|
|
|
@ManyToOne(() => ScenarioRunEntity, { onDelete: "CASCADE" })
|
|
@JoinColumn({ name: "runId" })
|
|
run: ScenarioRunEntity;
|
|
|
|
@ManyToOne(() => FileEntity, { onDelete: "CASCADE" })
|
|
@JoinColumn({ name: "fileId" })
|
|
file: FileEntity;
|
|
|
|
@CreateDateColumn()
|
|
createdAt: Date;
|
|
}
|