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

Function makeCoreDb

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

Source from the content-addressed store, hash-verified

1283const asLooseStorageDb = (db: unknown): LooseStorageDb => db as LooseStorageDb;
1284
1285const makeCoreDb = (fuma: ReturnType<typeof makeFumaClient>) => ({
1286 transaction: <A, E>(effect: Effect.Effect<A, E>): Effect.Effect<A, E | StorageFailure> =>
1287 fuma.transaction(effect),
1288 count: <TName extends CoreTableName>(
1289 tableName: TName,
1290 options?: { readonly where?: CoreWhere },
1291 ): Effect.Effect<number, StorageFailure> =>
1292 fuma.use(`${tableName}.count`, (db) => asLooseStorageDb(db).count(tableName, options)),
1293 create: <TName extends CoreTableName>(
1294 tableName: TName,
1295 row: Record<string, unknown>,
1296 ): Effect.Effect<CoreRow<TName>, StorageFailure> =>
1297 fuma.use(`${tableName}.create`, (db) =>
1298 asLooseStorageDb(db).create(tableName, row),
1299 ) as Effect.Effect<CoreRow<TName>, StorageFailure>,
1300 createMany: <TName extends CoreTableName>(
1301 tableName: TName,
1302 rows: readonly Record<string, unknown>[],
1303 ): Effect.Effect<void, StorageFailure> =>
1304 rows.length === 0
1305 ? Effect.void
1306 : fuma
1307 .use(`${tableName}.createMany`, (db) => asLooseStorageDb(db).createMany(tableName, rows))
1308 .pipe(Effect.asVoid),
1309 upsertMany: <TName extends CoreTableName>(
1310 tableName: TName,
1311 options: {
1312 readonly target: readonly string[];
1313 readonly update: readonly string[];
1314 readonly values: readonly Record<string, unknown>[];
1315 },
1316 ): Effect.Effect<void, StorageFailure> =>
1317 options.values.length === 0
1318 ? Effect.void
1319 : fuma.use(`${tableName}.upsertMany`, (db) =>
1320 asLooseStorageDb(db).upsertMany(tableName, options),
1321 ),
1322 deleteMany: <TName extends CoreTableName>(
1323 tableName: TName,
1324 options: { readonly where?: CoreWhere } = {},
1325 ): Effect.Effect<void, StorageFailure> =>
1326 fuma.use(`${tableName}.deleteMany`, (db) =>
1327 asLooseStorageDb(db).deleteMany(tableName, options),
1328 ),
1329 findFirst: <TName extends CoreTableName, const TOptions extends CoreFindFirstOptions<TName>>(
1330 tableName: TName,
1331 options: TOptions,
1332 ): Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure> =>
1333 fuma.use(`${tableName}.findFirst`, (db) =>
1334 asLooseStorageDb(db).findFirst(tableName, options),
1335 ) as Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure>,
1336 findMany: <TName extends CoreTableName, const TOptions extends CoreFindManyOptions<TName>>(
1337 tableName: TName,
1338 options: TOptions = {} as TOptions,
1339 ): Effect.Effect<readonly CoreProjectedRow<TName, TOptions["select"]>[], StorageFailure> =>
1340 fuma.use(`${tableName}.findMany`, (db) =>
1341 asLooseStorageDb(db).findMany(tableName, options),
1342 ) 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