forked from jappel/leistungsbilanz-ts
Add Revit return workbook export
This commit is contained in:
parent
77d775fde1
commit
1a4c8cad8c
17 changed files with 3783 additions and 6 deletions
16
src/db/migrations/0015_wide_night_thrasher.sql
Normal file
16
src/db/migrations/0015_wide_night_thrasher.sql
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
CREATE TABLE `external_export_batches` (
|
||||
`id` text PRIMARY KEY NOT NULL,
|
||||
`project_id` text NOT NULL,
|
||||
`project_revision` integer NOT NULL,
|
||||
`import_batch_id` text NOT NULL,
|
||||
`exported_at_iso` text NOT NULL,
|
||||
`file_name` text NOT NULL,
|
||||
`sha256` text NOT NULL,
|
||||
`configuration_snapshot` text NOT NULL,
|
||||
`configuration_sha256` text NOT NULL,
|
||||
`scope` text NOT NULL,
|
||||
`object_count` integer NOT NULL,
|
||||
FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON UPDATE no action ON DELETE cascade
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX `external_export_batches_project_exported_idx` ON `external_export_batches` (`project_id`,`exported_at_iso`);
|
||||
3210
src/db/migrations/meta/0015_snapshot.json
Normal file
3210
src/db/migrations/meta/0015_snapshot.json
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -106,6 +106,13 @@
|
|||
"when": 1790748107566,
|
||||
"tag": "0014_linear_xlsx_external_model",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"version": "6",
|
||||
"when": 1790773066696,
|
||||
"tag": "0015_wide_night_thrasher",
|
||||
"breakpoints": true
|
||||
}
|
||||
]
|
||||
}
|
||||
18
src/db/repositories/external-export-batch.repository.ts
Normal file
18
src/db/repositories/external-export-batch.repository.ts
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
import { desc, eq } from "drizzle-orm";
|
||||
import type { AppDatabase } from "../database-context.js";
|
||||
import { externalExportBatches } from "../schema/external-export-batches.js";
|
||||
|
||||
export class ExternalExportBatchRepository {
|
||||
constructor(private readonly database: AppDatabase) {}
|
||||
|
||||
append(batch: typeof externalExportBatches.$inferInsert) {
|
||||
this.database.insert(externalExportBatches).values(batch).run();
|
||||
return batch;
|
||||
}
|
||||
|
||||
listByProject(projectId: string) {
|
||||
return this.database.select().from(externalExportBatches)
|
||||
.where(eq(externalExportBatches.projectId, projectId))
|
||||
.orderBy(desc(externalExportBatches.exportedAtIso), desc(externalExportBatches.id)).all();
|
||||
}
|
||||
}
|
||||
24
src/db/schema/external-export-batches.ts
Normal file
24
src/db/schema/external-export-batches.ts
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
import { index, integer, sqliteTable, text } from "drizzle-orm/sqlite-core";
|
||||
import type { ExternalModelConfiguration } from "../../external-model/configuration/external-model-configuration.js";
|
||||
import { projects } from "./projects.js";
|
||||
|
||||
export const externalExportScopes = ["all", "deviating", "selected"] as const;
|
||||
export type ExternalExportScope = (typeof externalExportScopes)[number];
|
||||
|
||||
export const externalExportBatches = sqliteTable(
|
||||
"external_export_batches",
|
||||
{
|
||||
id: text("id").primaryKey(),
|
||||
projectId: text("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
|
||||
projectRevision: integer("project_revision").notNull(),
|
||||
importBatchId: text("import_batch_id").notNull(),
|
||||
exportedAtIso: text("exported_at_iso").notNull(),
|
||||
fileName: text("file_name").notNull(),
|
||||
sha256: text("sha256").notNull(),
|
||||
configurationSnapshot: text("configuration_snapshot", { mode: "json" }).$type<ExternalModelConfiguration>().notNull(),
|
||||
configurationSha256: text("configuration_sha256").notNull(),
|
||||
scope: text("scope", { enum: externalExportScopes }).notNull(),
|
||||
objectCount: integer("object_count").notNull(),
|
||||
},
|
||||
(table) => [index("external_export_batches_project_exported_idx").on(table.projectId, table.exportedAtIso)]
|
||||
);
|
||||
Loading…
Add table
Add a link
Reference in a new issue