Compare commits
1 Commits
136b58c44f
...
60f87472a1
| Author | SHA1 | Date | |
|---|---|---|---|
| 60f87472a1 |
@ -1,7 +1,8 @@
|
||||
import * as schema2 from "$lib/server/db/schema/records";
|
||||
import * as schema1 from "$lib/server/db/schema/recordTypes";
|
||||
import * as schema3 from "$lib/server/db/schema/tasks";
|
||||
import { Database } from "bun:sqlite";
|
||||
import { drizzle } from "drizzle-orm/bun-sqlite";
|
||||
|
||||
const sqlite = new Database("sqlite.db");
|
||||
export const db = drizzle({ client: sqlite, schema: { ...schema1, ...schema2 } });
|
||||
export const db = drizzle({ client: sqlite, schema: { ...schema1, ...schema2, ...schema3 } });
|
||||
|
||||
71
src/lib/server/db/schema/tasks.ts
Normal file
71
src/lib/server/db/schema/tasks.ts
Normal file
@ -0,0 +1,71 @@
|
||||
import { relations, sql } from "drizzle-orm";
|
||||
import { type AnySQLiteColumn, check, int, sqliteTable, text } from "drizzle-orm/sqlite-core";
|
||||
|
||||
export type TaskIntegrationConfigs = {
|
||||
source_control: Array<{
|
||||
repo_id: string;
|
||||
commits: Array<{
|
||||
hash: string;
|
||||
message: string;
|
||||
description: string;
|
||||
}>;
|
||||
}>;
|
||||
};
|
||||
|
||||
export const taskTypes = sqliteTable("task_types", {
|
||||
id: int("id").primaryKey({ autoIncrement: true }),
|
||||
name: text("name").unique(),
|
||||
prefix: text("prefix").unique(),
|
||||
}, (table) => [
|
||||
check("prefix_limit", sql`LENGTH(${table.prefix}) <=2`),
|
||||
]);
|
||||
|
||||
export const taskTypesRelations = relations(taskTypes, ({ many }) => ({
|
||||
tasks: many(tasks),
|
||||
}));
|
||||
|
||||
export const tasks = sqliteTable("tasks", {
|
||||
id: int("id").primaryKey({ autoIncrement: true }),
|
||||
taskId: text("task_id").unique(),
|
||||
description: text("description"),
|
||||
type: int("type").references(() => taskTypes.id),
|
||||
subtype: text("subtype"),
|
||||
openDate: text("open_date").$type<Date["toISOString"]>(),
|
||||
closeDate: text("close_date").$type<Date["toISOString"]>(),
|
||||
status: text("status"),
|
||||
priority: text("priority"),
|
||||
parent: int("parent").references((): AnySQLiteColumn => tasks.id),
|
||||
body: text("body"),
|
||||
bodyHistory: text("body_history"),
|
||||
checklist: text("checklist", { mode: "json" }).$type<
|
||||
{
|
||||
enabled: boolean;
|
||||
entries: Array<{
|
||||
group: string;
|
||||
sort_order: number;
|
||||
checked: boolean;
|
||||
text: string;
|
||||
}>;
|
||||
}
|
||||
>(),
|
||||
updateChain: text("udpate_chain", { mode: "json" }).$type<
|
||||
{
|
||||
enabled: boolean;
|
||||
entries: Array<{
|
||||
updated_on: Date["toISOString"];
|
||||
updated_by: string;
|
||||
body: string;
|
||||
}>;
|
||||
}
|
||||
>(),
|
||||
integrations: text("integrations", { mode: "json" }).$type<
|
||||
{ type: keyof TaskIntegrationConfigs; config: TaskIntegrationConfigs["source_control"] }
|
||||
>(),
|
||||
});
|
||||
|
||||
export const tasksRelations = relations(tasks, ({ one }) => ({
|
||||
type: one(taskTypes, {
|
||||
fields: [tasks.type],
|
||||
references: [taskTypes.id],
|
||||
}),
|
||||
}));
|
||||
Loading…
Reference in New Issue
Block a user