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

Function makeCoreDb

packages/core/sdk/src/executor.ts:1318–1386  ·  view source on GitHub ↗
(fuma: ReturnType<typeof makeFumaClient>)

Source from the content-addressed store, hash-verified

1316const asLooseStorageDb = (db: unknown): LooseStorageDb => db as LooseStorageDb;
1317
1318const makeCoreDb = (fuma: ReturnType<typeof makeFumaClient>) => ({
1319 transaction: <A, E>(effect: Effect.Effect<A, E>): Effect.Effect<A, E | StorageFailure> =>
1320 fuma.transaction(effect),
1321 count: <TName extends CoreTableName>(
1322 tableName: TName,
1323 options?: { readonly where?: CoreWhere },
1324 ): Effect.Effect<number, StorageFailure> =>
1325 fuma.use(`${tableName}.count`, (db) => asLooseStorageDb(db).count(tableName, options)),
1326 create: <TName extends CoreTableName>(
1327 tableName: TName,
1328 row: Record<string, unknown>,
1329 ): Effect.Effect<CoreRow<TName>, StorageFailure> =>
1330 fuma.use(`${tableName}.create`, (db) =>
1331 asLooseStorageDb(db).create(tableName, row),
1332 ) as Effect.Effect<CoreRow<TName>, StorageFailure>,
1333 createMany: <TName extends CoreTableName>(
1334 tableName: TName,
1335 rows: readonly Record<string, unknown>[],
1336 ): Effect.Effect<void, StorageFailure> =>
1337 rows.length === 0
1338 ? Effect.void
1339 : fuma
1340 .use(`${tableName}.createMany`, (db) => asLooseStorageDb(db).createMany(tableName, rows))
1341 .pipe(Effect.asVoid),
1342 upsertMany: <TName extends CoreTableName>(
1343 tableName: TName,
1344 options: {
1345 readonly target: readonly string[];
1346 readonly update: readonly string[];
1347 readonly values: readonly Record<string, unknown>[];
1348 },
1349 ): Effect.Effect<void, StorageFailure> =>
1350 options.values.length === 0
1351 ? Effect.void
1352 : fuma.use(`${tableName}.upsertMany`, (db) =>
1353 asLooseStorageDb(db).upsertMany(tableName, options),
1354 ),
1355 deleteMany: <TName extends CoreTableName>(
1356 tableName: TName,
1357 options: { readonly where?: CoreWhere } = {},
1358 ): Effect.Effect<void, StorageFailure> =>
1359 fuma.use(`${tableName}.deleteMany`, (db) =>
1360 asLooseStorageDb(db).deleteMany(tableName, options),
1361 ),
1362 findFirst: <TName extends CoreTableName, const TOptions extends CoreFindFirstOptions<TName>>(
1363 tableName: TName,
1364 options: TOptions,
1365 ): Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure> =>
1366 fuma.use(`${tableName}.findFirst`, (db) =>
1367 asLooseStorageDb(db).findFirst(tableName, options),
1368 ) as Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure>,
1369 findMany: <TName extends CoreTableName, const TOptions extends CoreFindManyOptions<TName>>(
1370 tableName: TName,
1371 options: TOptions = {} as TOptions,
1372 ): Effect.Effect<readonly CoreProjectedRow<TName, TOptions["select"]>[], StorageFailure> =>
1373 fuma.use(`${tableName}.findMany`, (db) =>
1374 asLooseStorageDb(db).findMany(tableName, options),
1375 ) as Effect.Effect<readonly CoreProjectedRow<TName, TOptions["select"]>[], StorageFailure>,

Callers 2

createExecutorFunction · 0.85
makeAdminFunction · 0.85

Calls 3

asLooseStorageDbFunction · 0.85
countMethod · 0.80
transactionMethod · 0.65

Tested by

no test coverage detected