Add database schema and Kysely packages

- Create initial database migration with full auth schema:
  - users, sessions, passkeys, devices tables
  - orgs, org_members, org_sites, org_invites tables
  - email_verifications, password_resets, login_requests tables
  - Indexes for common lookups and cleanup jobs
- Add @reviq/db-schema package with kysely-codegen
- Add @reviq/db package with Kysely client

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
RevIQ
2026-01-09 11:44:36 +08:00
parent 322155b4a1
commit 392d976812
12 changed files with 1676 additions and 0 deletions

37
packages/db/src/client.ts Normal file
View File

@@ -0,0 +1,37 @@
/**
* Kysely database client
*
* @module @reviq/db
*/
import { Kysely, PostgresDialect } from "kysely";
import type { Database } from "@reviq/db-schema";
import pg from "pg";
const { Pool } = pg;
/**
* Creates a new Kysely database client
*
* @param connectionString - PostgreSQL connection string (defaults to DATABASE_URL env var)
* @returns Kysely database instance
*/
export const createDb = (
connectionString: string = process.env.DATABASE_URL || ""
): Kysely<Database> => {
if (!connectionString) {
throw new Error(
"Database connection string is required. Set DATABASE_URL environment variable."
);
}
const dialect = new PostgresDialect({
pool: new Pool({
connectionString,
}),
});
return new Kysely<Database>({
dialect,
});
};