Initial commit

This commit is contained in:
agent
2026-03-13 23:21:55 +00:00
commit c8ed262197
113 changed files with 13211 additions and 0 deletions

14
lib/db/drizzle.config.ts Normal file
View File

@@ -0,0 +1,14 @@
import { defineConfig } from "drizzle-kit";
import path from "path";
if (!process.env.DATABASE_URL) {
throw new Error("DATABASE_URL, ensure the database is provisioned");
}
export default defineConfig({
schema: path.join(__dirname, "./src/schema/index.ts"),
dialect: "postgresql",
dbCredentials: {
url: process.env.DATABASE_URL,
},
});

25
lib/db/package.json Normal file
View File

@@ -0,0 +1,25 @@
{
"name": "@workspace/db",
"version": "0.0.0",
"private": true,
"type": "module",
"exports": {
".": "./src/index.ts",
"./schema": "./src/schema/index.ts"
},
"scripts": {
"push": "drizzle-kit push --config ./drizzle.config.ts",
"push-force": "drizzle-kit push --force --config ./drizzle.config.ts"
},
"dependencies": {
"drizzle-orm": "catalog:",
"drizzle-zod": "^0.8.3",
"pg": "^8.20.0",
"zod": "catalog:"
},
"devDependencies": {
"@types/node": "catalog:",
"@types/pg": "^8.18.0",
"drizzle-kit": "^0.31.9"
}
}

16
lib/db/src/index.ts Normal file
View File

@@ -0,0 +1,16 @@
import { drizzle } from "drizzle-orm/node-postgres";
import pg from "pg";
import * as schema from "./schema";
const { Pool } = pg;
if (!process.env.DATABASE_URL) {
throw new Error(
"DATABASE_URL must be set. Did you forget to provision a database?",
);
}
export const pool = new Pool({ connectionString: process.env.DATABASE_URL });
export const db = drizzle(pool, { schema });
export * from "./schema";

View File

@@ -0,0 +1,20 @@
// Export your models here. Add one export per file
// export * from "./posts";
//
// Each model/table should ideally be split into different files.
// Each model/table should define a Drizzle table, insert schema, and types:
//
// import { pgTable, text, serial } from "drizzle-orm/pg-core";
// import { createInsertSchema } from "drizzle-zod";
// import { z } from "zod/v4";
//
// export const postsTable = pgTable("posts", {
// id: serial("id").primaryKey(),
// title: text("title").notNull(),
// });
//
// export const insertPostSchema = createInsertSchema(postsTable).omit({ id: true });
// export type InsertPost = z.infer<typeof insertPostSchema>;
// export type Post = typeof postsTable.$inferSelect;
export {}

12
lib/db/tsconfig.json Normal file
View File

@@ -0,0 +1,12 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"composite": true,
"declarationMap": true,
"emitDeclarationOnly": true,
"outDir": "dist",
"rootDir": "src",
"types": ["node"]
},
"include": ["src"]
}