← Files Electrical Progress TrackerARCHIVED FILE
skills/create-tracker/assets/source/db/schema.ts
2.14 KB · Oct 2, 2026 · 00:34 UTC
import { sql } from "drizzle-orm";
import { index, integer, sqliteTable, text } from "drizzle-orm/sqlite-core";
export const fixtureProgress = sqliteTable("fixture_progress", {
fixtureId: text("fixture_id").primaryKey(),
status: text("status").notNull().default("not-started"),
updatedAt: text("updated_at").notNull().default(sql`CURRENT_TIMESTAMP`),
});
export const fixtureStatusHistory = sqliteTable("fixture_status_history", {
id: integer("id").primaryKey({ autoIncrement: true }),
fixtureId: text("fixture_id").notNull(),
previousStatus: text("previous_status").notNull(),
newStatus: text("new_status").notNull(),
changedAt: text("changed_at").notNull().default(sql`CURRENT_TIMESTAMP`),
}, table => [index("idx_fixture_status_history_fixture_id").on(table.fixtureId)]);
export const trackerNotes = sqliteTable("tracker_notes", {
id: integer("id").primaryKey({ autoIncrement: true }),
content: text("content").notNull(),
system: text("system"),
floor: text("floor"),
createdAt: text("created_at").notNull().default(sql`CURRENT_TIMESTAMP`),
updatedAt: text("updated_at").notNull().default(sql`CURRENT_TIMESTAMP`),
}, table => [index("idx_tracker_notes_updated_at").on(table.updatedAt)]);
export const trackerManagers = sqliteTable("tracker_managers", {
email: text("email").primaryKey(),
addedBy: text("added_by").notNull(),
createdAt: text("created_at").notNull().default(sql`CURRENT_TIMESTAMP`),
});
export const fixtureHistoryClears = sqliteTable("fixture_history_clears", {
fixtureId: text("fixture_id").primaryKey(),
clearedAt: text("cleared_at").notNull().default(sql`CURRENT_TIMESTAMP`),
clearedBy: text("cleared_by").notNull(),
});
export const progressReports = sqliteTable("progress_reports", {
id: integer("id").primaryKey({ autoIncrement: true }),
periodType: text("period_type").notNull(),
periodStart: text("period_start").notNull(),
periodEnd: text("period_end").notNull(),
summaryJson: text("summary_json").notNull(),
createdAt: text("created_at").notNull().default(sql`CURRENT_TIMESTAMP`),
createdBy: text("created_by").notNull(),
}, table => [index("idx_progress_reports_created_at").on(table.createdAt)]);
SHA-256: 0e78a906ad8533fc254605a834e4028ae8f6592b46eb9d502b25685e932f70b6