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
2026-03-19 16:17:26 -06:00
|
|
|
import { pgEnum, pgTable, text, timestamp } from "drizzle-orm/pg-core";
|
2026-03-19 13:30:52 -06:00
|
|
|
|
|
|
|
|
export const users = pgTable("users", {
|
|
|
|
|
id: text("id").primaryKey().$defaultFn(() => crypto.randomUUID()),
|
|
|
|
|
email: text("email").notNull().unique(),
|
|
|
|
|
passwordHash: text("password_hash").notNull(),
|
|
|
|
|
createdAt: timestamp("created_at").defaultNow().notNull(),
|
|
|
|
|
});
|
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
2026-03-19 16:17:26 -06:00
|
|
|
|
|
|
|
|
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(),
|
|
|
|
|
});
|