import { sqliteTable, text, integer, primaryKey } from "drizzle-orm/sqlite-core" import * as DatabasePath from "../database/path" import { Timestamps } from "../database/schema.sql" import { ProjectSchema } from "./schema" export const ProjectTable = sqliteTable("project", { id: text().$type().primaryKey(), worktree: DatabasePath.absoluteColumn().notNull(), vcs: text(), name: text(), icon_url: text(), icon_url_override: text(), icon_color: text(), ...Timestamps, time_initialized: integer(), sandboxes: DatabasePath.absoluteArrayColumn().notNull(), commands: text({ mode: "json" }).$type<{ start?: string }>(), }) export const ProjectDirectoryTable = sqliteTable( "project_directory", { project_id: text() .$type() .notNull() .references(() => ProjectTable.id, { onDelete: "cascade" }), directory: DatabasePath.absoluteColumn().notNull(), type: text().$type<"main" | "root" | "git_worktree">(), strategy: text(), time_created: integer() .notNull() .$default(() => Date.now()), }, (table) => [primaryKey({ columns: [table.project_id, table.directory] })], )