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

Function makeCoreDb

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

Source from the content-addressed store, hash-verified

989const asLooseStorageDb = (db: unknown): LooseStorageDb => db as LooseStorageDb;
990
991const makeCoreDb = (fuma: ReturnType<typeof makeFumaClient>) => ({
992 count: <TName extends CoreTableName>(
993 tableName: TName,
994 options?: { readonly where?: CoreWhere },
995 ): Effect.Effect<number, StorageFailure> =>
996 fuma.use(`${tableName}.count`, (db) => asLooseStorageDb(db).count(tableName, options)),
997 create: <TName extends CoreTableName>(
998 tableName: TName,
999 row: Record<string, unknown>,
1000 ): Effect.Effect<CoreRow<TName>, StorageFailure> =>
1001 fuma.use(`${tableName}.create`, (db) =>
1002 asLooseStorageDb(db).create(tableName, row),
1003 ) as Effect.Effect<CoreRow<TName>, StorageFailure>,
1004 createMany: <TName extends CoreTableName>(
1005 tableName: TName,
1006 rows: readonly Record<string, unknown>[],
1007 ): Effect.Effect<void, StorageFailure> =>
1008 rows.length === 0
1009 ? Effect.void
1010 : fuma
1011 .use(`${tableName}.createMany`, (db) => asLooseStorageDb(db).createMany(tableName, rows))
1012 .pipe(Effect.asVoid),
1013 deleteMany: <TName extends CoreTableName>(
1014 tableName: TName,
1015 options: { readonly where?: CoreWhere } = {},
1016 ): Effect.Effect<void, StorageFailure> =>
1017 fuma.use(`${tableName}.deleteMany`, (db) =>
1018 asLooseStorageDb(db).deleteMany(tableName, options),
1019 ),
1020 findFirst: <TName extends CoreTableName, const TOptions extends CoreFindFirstOptions<TName>>(
1021 tableName: TName,
1022 options: TOptions,
1023 ): Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure> =>
1024 fuma.use(`${tableName}.findFirst`, (db) =>
1025 asLooseStorageDb(db).findFirst(tableName, options),
1026 ) as Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure>,
1027 findMany: <TName extends CoreTableName, const TOptions extends CoreFindManyOptions<TName>>(
1028 tableName: TName,
1029 options: TOptions = {} as TOptions,
1030 ): Effect.Effect<readonly CoreProjectedRow<TName, TOptions["select"]>[], StorageFailure> =>
1031 fuma.use(`${tableName}.findMany`, (db) =>
1032 asLooseStorageDb(db).findMany(tableName, options),
1033 ) as Effect.Effect<readonly CoreProjectedRow<TName, TOptions["select"]>[], StorageFailure>,
1034 updateMany: <TName extends CoreTableName>(
1035 tableName: TName,
1036 options: {
1037 readonly where?: CoreWhere;
1038 readonly set: Record<string, unknown>;
1039 },
1040 ): Effect.Effect<void, StorageFailure> =>
1041 fuma.use(`${tableName}.updateMany`, (db) =>
1042 asLooseStorageDb(db).updateMany(tableName, options),
1043 ),
1044});
1045
1046type CoreDb = ReturnType<typeof makeCoreDb>;
1047

Callers 2

createExecutorFunction · 0.85
makeAdminFunction · 0.85

Calls 2

asLooseStorageDbFunction · 0.85
countMethod · 0.80

Tested by

no test coverage detected