an absurd amount of tomfoolery
This commit is contained in:
3
bun.lock
3
bun.lock
@@ -17,6 +17,7 @@
|
||||
"better-sqlite3": "^12.6.2",
|
||||
"bits-ui": "^2.14.4",
|
||||
"clsx": "^2.1.1",
|
||||
"dotenv": "^17.2.4",
|
||||
"drizzle-kit": "^0.31.8",
|
||||
"drizzle-orm": "^0.45.1",
|
||||
"lefthook": "^2.1.0",
|
||||
@@ -373,6 +374,8 @@
|
||||
|
||||
"devalue": ["devalue@5.6.2", "", {}, "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg=="],
|
||||
|
||||
"dotenv": ["dotenv@17.2.4", "", {}, "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw=="],
|
||||
|
||||
"drizzle-kit": ["drizzle-kit@0.31.8", "", { "dependencies": { "@drizzle-team/brocli": "^0.10.2", "@esbuild-kit/esm-loader": "^2.5.5", "esbuild": "^0.25.4", "esbuild-register": "^3.5.0" }, "bin": { "drizzle-kit": "bin.cjs" } }, "sha512-O9EC/miwdnRDY10qRxM8P3Pg8hXe3LyU4ZipReKOgTwn4OqANmftj8XJz1UPUAS6NMHf0E2htjsbQujUTkncCg=="],
|
||||
|
||||
"drizzle-orm": ["drizzle-orm@0.45.1", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=4", "@electric-sql/pglite": ">=0.2.0", "@libsql/client": ">=0.10.0", "@libsql/client-wasm": ">=0.10.0", "@neondatabase/serverless": ">=0.10.0", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1.13", "@prisma/client": "*", "@tidbcloud/serverless": "*", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/sql.js": "*", "@upstash/redis": ">=1.34.7", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=14.0.0", "gel": ">=2", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@libsql/client-wasm", "@neondatabase/serverless", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@prisma/client", "@tidbcloud/serverless", "@types/better-sqlite3", "@types/pg", "@types/sql.js", "@upstash/redis", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "gel", "knex", "kysely", "mysql2", "pg", "postgres", "sql.js", "sqlite3"] }, "sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA=="],
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
"better-sqlite3": "^12.6.2",
|
||||
"bits-ui": "^2.14.4",
|
||||
"clsx": "^2.1.1",
|
||||
"dotenv": "^17.2.4",
|
||||
"drizzle-kit": "^0.31.8",
|
||||
"drizzle-orm": "^0.45.1",
|
||||
"lefthook": "^2.1.0",
|
||||
|
||||
@@ -9,17 +9,26 @@ import { browser } from "$app/environment";
|
||||
* Exported to allow query helpers to accept the specific type without
|
||||
* creating circular type references.
|
||||
*/
|
||||
export type ClientDb = ReturnType<typeof drizzle>;
|
||||
|
||||
// this is kinda mid
|
||||
export const sqlocal = browser ? await initDb() : null;
|
||||
export const db = sqlocal ? drizzle(sqlocal.driver, sqlocal.batchDriver) : null;
|
||||
// wacky typecasting, but it works to give type hints for db queries
|
||||
export const db = sqlocal
|
||||
? drizzle(sqlocal.driver, sqlocal.batchDriver)
|
||||
: ((await serverDb()) as unknown as ReturnType<typeof drizzle>);
|
||||
|
||||
export type ClientDb = typeof db;
|
||||
|
||||
async function initDb() {
|
||||
const { SQLocalDrizzle } = await import("sqlocal/drizzle");
|
||||
return new SQLocalDrizzle("database.sqlite3");
|
||||
}
|
||||
|
||||
async function serverDb() {
|
||||
const { db } = await import("..");
|
||||
return db;
|
||||
}
|
||||
|
||||
export function getClientDb() {
|
||||
if (!sqlocal || !db) throw "Client DB can only be accessed from the browser";
|
||||
return {
|
||||
|
||||
@@ -41,6 +41,7 @@ function ensureBrowser() {
|
||||
export async function ensureSeeded(
|
||||
opts: { version?: number; force?: boolean; fetch?: typeof fetch } = {},
|
||||
): Promise<void> {
|
||||
if (!browser) return;
|
||||
ensureBrowser();
|
||||
|
||||
const version = opts.version ?? AMQ_DB_SEED_VERSION;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// import 'dotenv/config';
|
||||
import { drizzle } from "drizzle-orm/bun-sqlite";
|
||||
import "dotenv/config";
|
||||
import { drizzle } from "drizzle-orm/better-sqlite3";
|
||||
|
||||
export const db = drizzle(process.env.DB_FILE_NAME);
|
||||
|
||||
Reference in New Issue
Block a user