🌳
pt0/serverF/dbF/kyselyTransactCtxF.mts
2import { getDb } from "./dbCtxF.mts"
3import type { Kysely, Transaction } from 'kysely'
6export const kyselyTransactCtx = genContext()
8export const kyselyEnabledCtx = genContext<{enabled: boolean}>('kyselyEnabled')
10export const wrapKyselyTransact = async <T,>(fnc: () => Promise<T>): Promise<T> => {
11 const {dbKys} = getDb()
12 return await (dbKys as Kysely<unknown>).transaction().execute(async (trx) => {
13 return await kyselyTransactCtx.run({dbKys: trx}, fnc)
14 })
17export const getTransactOrDbKys = <DB,>(): Kysely<DB> | Transaction<DB> => {
18 const transCtx = kyselyTransactCtx.getStore()
19 if (transCtx) return transCtx.dbKys as Transaction<DB>
20 return getDb().dbKys as Kysely<DB>
23export const getReqKyselyTransact = <DB,>(): Kysely<DB> => {
24 const store = kyselyTransactCtx.getStore()
26 return store.dbKys as Kysely<DB>