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

Function makeSafeFumaQuery

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

Source from the content-addressed store, hash-verified

321};
322
323const makeSafeFumaQuery = <TSchema extends AnySchema>(
324 db: FumaDb<TSchema>,
325 options: MakeFumaClientOptions,
326): FumaQuery<TSchema> => {
327 const table = <TableName extends keyof TSchema["tables"]>(name: TableName): TableName => {
328 assertAllowedTable(options.tables, name);
329 return name;
330 };
331
332 const query: FumaQuery<TSchema> = {
333 count: (name, value) => db.count(table(name), value),
334 create: (name, value) => db.create(table(name), value),
335 createMany: (name, values) => db.createMany(table(name), values),
336 deleteMany: (name, value) => db.deleteMany(table(name), value),
337 findFirst: (name, value) => db.findFirst(table(name), value),
338 findMany: (name, value) => db.findMany(table(name), value),
339 transaction: (run) =>
340 db.transaction((transactionDb) => run(makeSafeFumaQuery(transactionDb, options))),
341 updateMany: (name, value) => db.updateMany(table(name), value),
342 upsert: (name, value) => db.upsert(table(name), value),
343 upsertMany: (name, value) => db.upsertMany(table(name), value),
344 };
345
346 return Object.freeze(query);
347};
348
349export const makeFumaClient = (db: FumaDb, options: MakeFumaClientOptions = {}): IFumaClient => {
350 const use: IFumaClient["use"] = (label, fn) =>

Callers 1

useFunction · 0.85

Calls 4

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

Tested by

no test coverage detected