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

Function makeSafeFumaQuery

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

Source from the content-addressed store, hash-verified

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

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