mirror of
https://github.com/linsa-io/linsa.git
synced 2026-01-12 12:20:23 +01:00
Add URL management schema, route, and related updates for URLs feature
This commit is contained in:
34
packages/worker/src/db.ts
Normal file
34
packages/worker/src/db.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import postgres from "postgres"
|
||||
import { drizzle } from "drizzle-orm/postgres-js"
|
||||
import * as schema from "../../web/src/db/schema"
|
||||
|
||||
export type Hyperdrive = {
|
||||
connectionString: string
|
||||
}
|
||||
|
||||
export type WorkerEnv = {
|
||||
DATABASE_URL?: string
|
||||
HYPERDRIVE?: Hyperdrive
|
||||
}
|
||||
|
||||
const getConnectionString = (env?: WorkerEnv): string => {
|
||||
if (env?.DATABASE_URL) {
|
||||
return env.DATABASE_URL
|
||||
}
|
||||
|
||||
if (env?.HYPERDRIVE?.connectionString) {
|
||||
return env.HYPERDRIVE.connectionString
|
||||
}
|
||||
|
||||
if (process.env.DATABASE_URL) {
|
||||
return process.env.DATABASE_URL
|
||||
}
|
||||
|
||||
throw new Error("No database connection available. Set DATABASE_URL or HYPERDRIVE.")
|
||||
}
|
||||
|
||||
export const getDb = (env?: WorkerEnv) => {
|
||||
const connectionString = getConnectionString(env)
|
||||
const sql = postgres(connectionString, { prepare: false })
|
||||
return drizzle(sql, { schema, casing: "snake_case" })
|
||||
}
|
||||
Reference in New Issue
Block a user