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

Function makeSafeFumaQuery

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

Source from the content-addressed store, hash-verified

124};
125
126const makeSafeFumaQuery = <TSchema extends AnySchema>(
127 db: FumaDb<TSchema>,
128 options: MakeFumaClientOptions,
129): FumaQuery<TSchema> => {
130 const table = <TableName extends keyof TSchema["tables"]>(name: TableName): TableName => {
131 assertAllowedTable(options.tables, name);
132 return name;
133 };
134
135 const query: FumaQuery<TSchema> = {
136 count: (name, value) => db.count(table(name), value),
137 create: (name, value) => db.create(table(name), value),
138 createMany: (name, values) => db.createMany(table(name), values),
139 deleteMany: (name, value) => db.deleteMany(table(name), value),
140 findFirst: (name, value) => db.findFirst(table(name), value),
141 findMany: (name, value) => db.findMany(table(name), value),
142 transaction: (run) =>
143 db.transaction((transactionDb) => run(makeSafeFumaQuery(transactionDb, options))),
144 updateMany: (name, value) => db.updateMany(table(name), value),
145 upsert: (name, value) => db.upsert(table(name), value),
146 };
147
148 return Object.freeze(query);
149};
150
151export const makeFumaClient = (db: FumaDb, options: MakeFumaClientOptions = {}): IFumaClient => {
152 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