mirror of
https://github.com/civitai/civitai.git
synced 2026-09-20 22:08:18 +08:00
5cc887c97c
Convert the civitai-* base packages from eager singletons into app-agnostic factories with their own zod env schemas, and wire them into the main app via thin shims. Packages now import only external deps (+ @civitai/db-schema); the app injects behavior (loggers, Flipt resolver, slow-query sink) and owns HMR globals + the Next build guard. - Phase 0: pnpm-workspace.yaml, per-package package.json + index barrels, @civitai/* tsconfig paths, transpilePackages - axiom/redis/db/clickhouse: createX() factories reading package-owned env.ts (z.prettifyError); Partial<Config> overrides - db: createPrismaClients + config-driven getClient pool factory; kv-helpers.ts breaks the client<->db-helpers cycle; limitConcurrency vendored; pg singletons -> app shims - clickhouse: base client stays; Tracker (auth/session/schema-coupled) extracted to src/server/clickhouse/tracker.ts - telemetry: prom helpers stay; DB pool-gauge block -> src/server/prom/client.ts - prisma generate paths updated for the db-schema package; generated slim schema gitignored Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
21 lines
705 B
TypeScript
21 lines
705 B
TypeScript
// App shim: datapacket read pool. See pgDb.ts for the pattern.
|
|
import { getClient, type AugmentedPool } from '@civitai/db/db-helpers';
|
|
import { isProd } from '~/env/other';
|
|
import { createLogger } from '~/utils/logging';
|
|
|
|
const log = createLogger('pgDb', 'blue');
|
|
|
|
declare global {
|
|
// eslint-disable-next-line no-var, vars-on-top
|
|
var globalDatapacketDbRead: AugmentedPool | undefined;
|
|
}
|
|
|
|
export let datapacketDbRead: AugmentedPool;
|
|
if (isProd) {
|
|
datapacketDbRead = getClient({ instance: 'datapacketRead', log });
|
|
} else {
|
|
if (!global.globalDatapacketDbRead)
|
|
global.globalDatapacketDbRead = getClient({ instance: 'datapacketRead', log });
|
|
datapacketDbRead = global.globalDatapacketDbRead;
|
|
}
|