From 7a5409b98c7eaaa7198d30363eeae0b99c065ed3 Mon Sep 17 00:00:00 2001 From: "Dennis (via Claude+Gemma)" Date: Sat, 23 May 2026 04:25:16 +0200 Subject: [PATCH] gemma: generate apps/api/src/db/schema.ts --- apps/api/src/db/schema.ts | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 apps/api/src/db/schema.ts diff --git a/apps/api/src/db/schema.ts b/apps/api/src/db/schema.ts new file mode 100644 index 0000000..92c8522 --- /dev/null +++ b/apps/api/src/db/schema.ts @@ -0,0 +1,35 @@ +import { pgTable, text, timestamp, boolean, uuid } from "drizzle-orm/pg-core" + +export const users = pgTable("users", { + id: uuid("id").primaryKey().defaultRandom(), + email: text("email").notNull().unique(), + name: text("name").notNull(), + role: text("role").notNull(), + passwordHash: text("password_hash").notNull(), + createdAt: timestamp("created_at").notNull().defaultNow() +}) + +export const customers = pgTable("customers", { + id: uuid("id").primaryKey().defaultRandom(), + name: text("name").notNull(), + active: boolean("active").notNull().default(true), + createdAt: timestamp("created_at").notNull().defaultNow() +}) + +export const projects = pgTable("projects", { + id: uuid("id").primaryKey().defaultRandom(), + name: text("name").notNull(), + customerId: uuid("customer_id").notNull().references(() => customers.id, { onDelete: "cascade" }), + active: boolean("active").notNull().default(true), + createdAt: timestamp("created_at").notNull().defaultNow() +}) + +export const timeEntries = pgTable("time_entries", { + id: uuid("id").primaryKey().defaultRandom(), + userId: uuid("user_id").notNull().references(() => users.id, { onDelete: "cascade" }), + projectId: uuid("project_id").references(() => projects.id, { onDelete: "cascade" }), + description: text("description").notNull(), + startTime: timestamp("start_time").notNull(), + endTime: timestamp("end_time"), + createdAt: timestamp("created_at").notNull().defaultNow() +}) \ No newline at end of file