- Seitenansicht (/projects/:projectId/print): tabular cover page, board overview with supply structure and power sums, one plan per board with a repeating title block; PDF via the browser print dialog with named @page rules (A4 portrait cover, A4/A3 landscape plans, page x of y). - Distribution-board info card (board number, location, fed-from, remark) in the board edit dialog, persisted through the additively extended distribution-board.update command (migration 0008, snapshot schema 6, legacy subtree commands normalized). - Global document logo upload (PNG/JPEG/SVG, max 2 MB) outside project revisions and snapshots. - fed-from stays free text; the overview hierarchy and cumulated sums are preliminary until the feed link is modeled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
24 lines
858 B
TypeScript
24 lines
858 B
TypeScript
import { real, sqliteTable, text } from "drizzle-orm/sqlite-core";
|
|
import { floors } from "./floors.js";
|
|
import { projects } from "./projects.js";
|
|
import type { DistributionBoardSupplyType } from "../../shared/constants/distribution-board.js";
|
|
|
|
export const distributionBoards = sqliteTable("distribution_boards", {
|
|
id: text("id").primaryKey(),
|
|
projectId: text("project_id")
|
|
.notNull()
|
|
.references(() => projects.id, { onDelete: "cascade" }),
|
|
name: text("name").notNull(),
|
|
floorId: text("floor_id").references(() => floors.id, {
|
|
onDelete: "set null",
|
|
}),
|
|
supplyType: text("supply_type").$type<DistributionBoardSupplyType>(),
|
|
simultaneityFactor: real("simultaneity_factor")
|
|
.notNull()
|
|
.default(1),
|
|
boardNumber: text("board_number"),
|
|
location: text("location"),
|
|
fedFrom: text("fed_from"),
|
|
remark: text("remark"),
|
|
});
|
|
|