// server/db/schema.ts import { sqliteTable, text, integer } from "drizzle-orm/sqlite-core"; export const machines = sqliteTable("machines", { id: text("id").primaryKey(), name: text("name").notNull(), hostname: text("hostname").notNull(), port: integer("port").notNull().default(22), osFamily: text("os_family").notNull().default("unknown"), username: text("username").notNull(), encPassword: text("enc_password").notNull(), encSudoPassword: text("enc_sudo_password"), aptProxyMode: text("apt_proxy_mode").notNull().default("direct"), aptProxyUrl: text("apt_proxy_url"), status: text("status").notNull().default("unknown"), lastCheckedAt: text("last_checked_at"), createdAt: text("created_at").notNull(), }); export const snapshots = sqliteTable("snapshots", { id: text("id").primaryKey(), machineId: text("machine_id").notNull().references(() => machines.id, { onDelete: "cascade" }), checkedAt: text("checked_at").notNull(), status: text("status").notNull(), payloadJson: text("payload_json").notNull(), }); export const executions = sqliteTable("executions", { id: text("id").primaryKey(), machineId: text("machine_id").notNull().references(() => machines.id, { onDelete: "cascade" }), action: text("action").notNull(), mode: text("mode").notNull().default("manual"), startedAt: text("started_at").notNull(), finishedAt: text("finished_at"), status: text("status").notNull(), resultJson: text("result_json"), reportPath: text("report_path"), rawLogPath: text("raw_log_path"), });