feat(03-01): add clients and documents tables to Drizzle schema

- Add pgEnum import and documentStatusEnum (Draft, Sent, Viewed, Signed)
- Add clients table (id, name, email, createdAt, updatedAt)
- Add documents table (id, name, clientId FK, status enum, sentAt, createdAt)
- Generate migration 0001_watery_blindfold.sql and apply to local PostgreSQL
This commit is contained in:
Chandler Copeland
2026-03-19 16:17:26 -06:00
parent 3cda82df51
commit f8f8b8f4ba
4 changed files with 240 additions and 1 deletions

View File

@@ -1,4 +1,4 @@
import { pgTable, text, timestamp } from "drizzle-orm/pg-core";
import { pgEnum, pgTable, text, timestamp } from "drizzle-orm/pg-core";
export const users = pgTable("users", {
id: text("id").primaryKey().$defaultFn(() => crypto.randomUUID()),
@@ -6,3 +6,29 @@ export const users = pgTable("users", {
passwordHash: text("password_hash").notNull(),
createdAt: timestamp("created_at").defaultNow().notNull(),
});
export const documentStatusEnum = pgEnum("document_status", [
"Draft",
"Sent",
"Viewed",
"Signed",
]);
export const clients = pgTable("clients", {
id: text("id").primaryKey().$defaultFn(() => crypto.randomUUID()),
name: text("name").notNull(),
email: text("email").notNull(),
createdAt: timestamp("created_at").defaultNow().notNull(),
updatedAt: timestamp("updated_at").defaultNow().notNull(),
});
export const documents = pgTable("documents", {
id: text("id").primaryKey().$defaultFn(() => crypto.randomUUID()),
name: text("name").notNull(),
clientId: text("client_id")
.notNull()
.references(() => clients.id, { onDelete: "cascade" }),
status: documentStatusEnum("status").notNull().default("Draft"),
sentAt: timestamp("sent_at"),
createdAt: timestamp("created_at").defaultNow().notNull(),
});