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

Function makeCoreDb

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

Source from the content-addressed store, hash-verified

959const asLooseStorageDb = (db: unknown): LooseStorageDb => db as LooseStorageDb;
960
961const makeCoreDb = (fuma: ReturnType<typeof makeFumaClient>) => ({
962 count: <TName extends CoreTableName>(
963 tableName: TName,
964 options?: { readonly where?: CoreWhere },
965 ): Effect.Effect<number, StorageFailure> =>
966 fuma.use(`${tableName}.count`, (db) => asLooseStorageDb(db).count(tableName, options)),
967 create: <TName extends CoreTableName>(
968 tableName: TName,
969 row: Record<string, unknown>,
970 ): Effect.Effect<CoreRow<TName>, StorageFailure> =>
971 fuma.use(`${tableName}.create`, (db) =>
972 asLooseStorageDb(db).create(tableName, row),
973 ) as Effect.Effect<CoreRow<TName>, StorageFailure>,
974 createMany: <TName extends CoreTableName>(
975 tableName: TName,
976 rows: readonly Record<string, unknown>[],
977 ): Effect.Effect<void, StorageFailure> =>
978 rows.length === 0
979 ? Effect.void
980 : fuma
981 .use(`${tableName}.createMany`, (db) => asLooseStorageDb(db).createMany(tableName, rows))
982 .pipe(Effect.asVoid),
983 deleteMany: <TName extends CoreTableName>(
984 tableName: TName,
985 options: { readonly where?: CoreWhere } = {},
986 ): Effect.Effect<void, StorageFailure> =>
987 fuma.use(`${tableName}.deleteMany`, (db) =>
988 asLooseStorageDb(db).deleteMany(tableName, options),
989 ),
990 findFirst: <TName extends CoreTableName, const TOptions extends CoreFindFirstOptions<TName>>(
991 tableName: TName,
992 options: TOptions,
993 ): Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure> =>
994 fuma.use(`${tableName}.findFirst`, (db) =>
995 asLooseStorageDb(db).findFirst(tableName, options),
996 ) as Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure>,
997 findMany: <TName extends CoreTableName, const TOptions extends CoreFindManyOptions<TName>>(
998 tableName: TName,
999 options: TOptions = {} as TOptions,
1000 ): Effect.Effect<readonly CoreProjectedRow<TName, TOptions["select"]>[], StorageFailure> =>
1001 fuma.use(`${tableName}.findMany`, (db) =>
1002 asLooseStorageDb(db).findMany(tableName, options),
1003 ) as Effect.Effect<readonly CoreProjectedRow<TName, TOptions["select"]>[], StorageFailure>,
1004 updateMany: <TName extends CoreTableName>(
1005 tableName: TName,
1006 options: {
1007 readonly where?: CoreWhere;
1008 readonly set: Record<string, unknown>;
1009 },
1010 ): Effect.Effect<void, StorageFailure> =>
1011 fuma.use(`${tableName}.updateMany`, (db) =>
1012 asLooseStorageDb(db).updateMany(tableName, options),
1013 ),
1014});
1015
1016type CoreDb = ReturnType<typeof makeCoreDb>;
1017

Callers 2

createExecutorFunction · 0.85
makeAdminFunction · 0.85

Calls 2

asLooseStorageDbFunction · 0.85
countMethod · 0.80

Tested by

no test coverage detected