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

Function makeSafeFumaQuery

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

Source from the content-addressed store, hash-verified

147};
148
149const makeSafeFumaQuery = <TSchema extends AnySchema>(
150 db: FumaDb<TSchema>,
151 options: MakeFumaClientOptions,
152): FumaQuery<TSchema> => {
153 const table = <TableName extends keyof TSchema["tables"]>(name: TableName): TableName => {
154 assertAllowedTable(options.tables, name);
155 return name;
156 };
157
158 const query: FumaQuery<TSchema> = {
159 count: (name, value) => db.count(table(name), value),
160 create: (name, value) => db.create(table(name), value),
161 createMany: (name, values) => db.createMany(table(name), values),
162 deleteMany: (name, value) => db.deleteMany(table(name), value),
163 findFirst: (name, value) => db.findFirst(table(name), value),
164 findMany: (name, value) => db.findMany(table(name), value),
165 transaction: (run) =>
166 db.transaction((transactionDb) => run(makeSafeFumaQuery(transactionDb, options))),
167 updateMany: (name, value) => db.updateMany(table(name), value),
168 upsert: (name, value) => db.upsert(table(name), value),
169 };
170
171 return Object.freeze(query);
172};
173
174export const makeFumaClient = (db: FumaDb, options: MakeFumaClientOptions = {}): IFumaClient => {
175 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