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

Function makeCoreDb

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

Source from the content-addressed store, hash-verified

1222const asLooseStorageDb = (db: unknown): LooseStorageDb => db as LooseStorageDb;
1223
1224const makeCoreDb = (fuma: ReturnType<typeof makeFumaClient>) => ({
1225 transaction: <A, E>(effect: Effect.Effect<A, E>): Effect.Effect<A, E | StorageFailure> =>
1226 fuma.transaction(effect),
1227 count: <TName extends CoreTableName>(
1228 tableName: TName,
1229 options?: { readonly where?: CoreWhere },
1230 ): Effect.Effect<number, StorageFailure> =>
1231 fuma.use(`${tableName}.count`, (db) => asLooseStorageDb(db).count(tableName, options)),
1232 create: <TName extends CoreTableName>(
1233 tableName: TName,
1234 row: Record<string, unknown>,
1235 ): Effect.Effect<CoreRow<TName>, StorageFailure> =>
1236 fuma.use(`${tableName}.create`, (db) =>
1237 asLooseStorageDb(db).create(tableName, row),
1238 ) as Effect.Effect<CoreRow<TName>, StorageFailure>,
1239 createMany: <TName extends CoreTableName>(
1240 tableName: TName,
1241 rows: readonly Record<string, unknown>[],
1242 ): Effect.Effect<void, StorageFailure> =>
1243 rows.length === 0
1244 ? Effect.void
1245 : fuma
1246 .use(`${tableName}.createMany`, (db) => asLooseStorageDb(db).createMany(tableName, rows))
1247 .pipe(Effect.asVoid),
1248 upsertMany: <TName extends CoreTableName>(
1249 tableName: TName,
1250 options: {
1251 readonly target: readonly string[];
1252 readonly update: readonly string[];
1253 readonly values: readonly Record<string, unknown>[];
1254 },
1255 ): Effect.Effect<void, StorageFailure> =>
1256 options.values.length === 0
1257 ? Effect.void
1258 : fuma.use(`${tableName}.upsertMany`, (db) =>
1259 asLooseStorageDb(db).upsertMany(tableName, options),
1260 ),
1261 deleteMany: <TName extends CoreTableName>(
1262 tableName: TName,
1263 options: { readonly where?: CoreWhere } = {},
1264 ): Effect.Effect<void, StorageFailure> =>
1265 fuma.use(`${tableName}.deleteMany`, (db) =>
1266 asLooseStorageDb(db).deleteMany(tableName, options),
1267 ),
1268 findFirst: <TName extends CoreTableName, const TOptions extends CoreFindFirstOptions<TName>>(
1269 tableName: TName,
1270 options: TOptions,
1271 ): Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure> =>
1272 fuma.use(`${tableName}.findFirst`, (db) =>
1273 asLooseStorageDb(db).findFirst(tableName, options),
1274 ) as Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure>,
1275 findMany: <TName extends CoreTableName, const TOptions extends CoreFindManyOptions<TName>>(
1276 tableName: TName,
1277 options: TOptions = {} as TOptions,
1278 ): Effect.Effect<readonly CoreProjectedRow<TName, TOptions["select"]>[], StorageFailure> =>
1279 fuma.use(`${tableName}.findMany`, (db) =>
1280 asLooseStorageDb(db).findMany(tableName, options),
1281 ) 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