mirror of
https://github.com/kennethnym/aris.git
synced 2026-03-20 09:01:19 +00:00
feat(backend): add DB persistence layer (#79)
* feat(backend): add DB persistence layer Replace raw pg Pool with Drizzle ORM backed by Bun.sql. Add per-user source configuration table (user_sources). Migrate Better Auth to drizzle-adapter. Add AES-256-GCM credential encryption. Co-authored-by: Ona <no-reply@ona.com> * fix(backend): set updatedAt explicitly in all mutations onConflictDoUpdate bypasses Drizzle's $onUpdate hook. Set updatedAt explicitly in all mutation methods. Co-authored-by: Ona <no-reply@ona.com> * fix(backend): add composite index on user_sources Add (user_id, enabled) index for the enabled() query path. Co-authored-by: Ona <no-reply@ona.com> --------- Co-authored-by: Ona <no-reply@ona.com>
This commit is contained in:
23
apps/aelis-backend/src/db/index.ts
Normal file
23
apps/aelis-backend/src/db/index.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { SQL } from "bun"
|
||||
import { drizzle, type BunSQLDatabase } from "drizzle-orm/bun-sql"
|
||||
|
||||
import * as schema from "./schema.ts"
|
||||
|
||||
export type Database = BunSQLDatabase<typeof schema>
|
||||
|
||||
export interface DatabaseConnection {
|
||||
db: Database
|
||||
close: () => Promise<void>
|
||||
}
|
||||
|
||||
export function createDatabase(url: string): DatabaseConnection {
|
||||
if (!url) {
|
||||
throw new Error("DATABASE_URL is required")
|
||||
}
|
||||
|
||||
const client = new SQL({ url })
|
||||
return {
|
||||
db: drizzle({ client, schema }),
|
||||
close: () => client.close(),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user