MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / makeSafeFumaQuery

Function makeSafeFumaQuery

packages/core/sdk/src/fuma-runtime.ts:268–292  ·  view source on GitHub ↗
(
  db: FumaDb<TSchema>,
  options: MakeFumaClientOptions,
)

Source from the content-addressed store, hash-verified

266};
267
268const makeSafeFumaQuery = <TSchema extends AnySchema>(
269 db: FumaDb<TSchema>,
270 options: MakeFumaClientOptions,
271): FumaQuery<TSchema> => {
272 const table = <TableName extends keyof TSchema["tables"]>(name: TableName): TableName => {
273 assertAllowedTable(options.tables, name);
274 return name;
275 };
276
277 const query: FumaQuery<TSchema> = {
278 count: (name, value) => db.count(table(name), value),
279 create: (name, value) => db.create(table(name), value),
280 createMany: (name, values) => db.createMany(table(name), values),
281 deleteMany: (name, value) => db.deleteMany(table(name), value),
282 findFirst: (name, value) => db.findFirst(table(name), value),
283 findMany: (name, value) => db.findMany(table(name), value),
284 transaction: (run) =>
285 db.transaction((transactionDb) => run(makeSafeFumaQuery(transactionDb, options))),
286 updateMany: (name, value) => db.updateMany(table(name), value),
287 upsert: (name, value) => db.upsert(table(name), value),
288 upsertMany: (name, value) => db.upsertMany(table(name), value),
289 };
290
291 return Object.freeze(query);
292};
293
294export const makeFumaClient = (db: FumaDb, options: MakeFumaClientOptions = {}): IFumaClient => {
295 const use: IFumaClient["use"] = (label, fn) =>

Callers 1

useFunction · 0.85

Calls 4

countMethod · 0.80
tableFunction · 0.70
transactionMethod · 0.65
runFunction · 0.50

Tested by

no test coverage detected