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",
|
"better-sqlite3": "^12.6.2",
|
||||||
"bits-ui": "^2.14.4",
|
"bits-ui": "^2.14.4",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
|
"dotenv": "^17.2.4",
|
||||||
"drizzle-kit": "^0.31.8",
|
"drizzle-kit": "^0.31.8",
|
||||||
"drizzle-orm": "^0.45.1",
|
"drizzle-orm": "^0.45.1",
|
||||||
"lefthook": "^2.1.0",
|
"lefthook": "^2.1.0",
|
||||||
@@ -373,6 +374,8 @@
|
|||||||
|
|
||||||
"devalue": ["devalue@5.6.2", "", {}, "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg=="],
|
"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-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=="],
|
"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",
|
"better-sqlite3": "^12.6.2",
|
||||||
"bits-ui": "^2.14.4",
|
"bits-ui": "^2.14.4",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
|
"dotenv": "^17.2.4",
|
||||||
"drizzle-kit": "^0.31.8",
|
"drizzle-kit": "^0.31.8",
|
||||||
"drizzle-orm": "^0.45.1",
|
"drizzle-orm": "^0.45.1",
|
||||||
"lefthook": "^2.1.0",
|
"lefthook": "^2.1.0",
|
||||||
|
|||||||
@@ -9,17 +9,26 @@ import { browser } from "$app/environment";
|
|||||||
* Exported to allow query helpers to accept the specific type without
|
* Exported to allow query helpers to accept the specific type without
|
||||||
* creating circular type references.
|
* creating circular type references.
|
||||||
*/
|
*/
|
||||||
export type ClientDb = ReturnType<typeof drizzle>;
|
|
||||||
|
|
||||||
// this is kinda mid
|
// this is kinda mid
|
||||||
export const sqlocal = browser ? await initDb() : null;
|
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() {
|
async function initDb() {
|
||||||
const { SQLocalDrizzle } = await import("sqlocal/drizzle");
|
const { SQLocalDrizzle } = await import("sqlocal/drizzle");
|
||||||
return new SQLocalDrizzle("database.sqlite3");
|
return new SQLocalDrizzle("database.sqlite3");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function serverDb() {
|
||||||
|
const { db } = await import("..");
|
||||||
|
return db;
|
||||||
|
}
|
||||||
|
|
||||||
export function getClientDb() {
|
export function getClientDb() {
|
||||||
if (!sqlocal || !db) throw "Client DB can only be accessed from the browser";
|
if (!sqlocal || !db) throw "Client DB can only be accessed from the browser";
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ function ensureBrowser() {
|
|||||||
export async function ensureSeeded(
|
export async function ensureSeeded(
|
||||||
opts: { version?: number; force?: boolean; fetch?: typeof fetch } = {},
|
opts: { version?: number; force?: boolean; fetch?: typeof fetch } = {},
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
|
if (!browser) return;
|
||||||
ensureBrowser();
|
ensureBrowser();
|
||||||
|
|
||||||
const version = opts.version ?? AMQ_DB_SEED_VERSION;
|
const version = opts.version ?? AMQ_DB_SEED_VERSION;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// import 'dotenv/config';
|
import "dotenv/config";
|
||||||
import { drizzle } from "drizzle-orm/bun-sqlite";
|
import { drizzle } from "drizzle-orm/better-sqlite3";
|
||||||
|
|
||||||
export const db = drizzle(process.env.DB_FILE_NAME);
|
export const db = drizzle(process.env.DB_FILE_NAME);
|
||||||
|
|||||||
Reference in New Issue
Block a user