🌳
pt0/deployF/wrapDbEnvF.mts
3import * as _ from 'lodash-es'
5import type { AppCfg } from './k8sF/ctxF/appCfgCtxF.mts'
10// IS_BUNDLE lets esbuild dead-code-eliminate the dynamic import — otherwise the deploy-hub
11// dep tree (deployNextAppF → k8sF TLA cycles) gets bundled and esbuild emits invalid await-in-sync-fn
12const {setDevPcEnv} = process.env.IS_BUNDLE || !isDevPc ? {setDevPcEnv: _.noop} : (await import("./devpconlyF/setDevPcEnvF.mts"))
14export const wrapDbEnv = async <R,>({
15 appConfig, wrappedFnc,
16 reuseConn = true, assumeDaemon = false,
17}: {
18 appConfig?: AppCfg, wrappedFnc?: (dbH: DbHandles) => Promise<R>,
19 reuseConn?: boolean, assumeDaemon?: boolean,
20}, wrappedFncAlt?: (dbH: DbHandles) => Promise<R>): Promise<R | undefined> => {
22 wrappedFnc ||= wrappedFncAlt
23 assertDefined(wrappedFnc)
25 const baseEnvConf = getEnvConfOpt() || {} as any
26 try {
27 return await envConfCtx.run({...baseEnvConf}, async () => {
28 if (appConfig) {
29 await setDevPcEnv(appConfig as any) // now mutates ctx, not global
30 }
31 return await withDb(wrappedFnc, {reuseConn})
32 })
33 } finally {
34 if (!assumeDaemon) portForwardMgr.teardown()
35 }