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

Function makeCoreDb

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

Source from the content-addressed store, hash-verified

1097const asLooseStorageDb = (db: unknown): LooseStorageDb => db as LooseStorageDb;
1098
1099const makeCoreDb = (fuma: ReturnType<typeof makeFumaClient>) => ({
1100 transaction: <A, E>(effect: Effect.Effect<A, E>): Effect.Effect<A, E | StorageFailure> =>
1101 fuma.transaction(effect),
1102 count: <TName extends CoreTableName>(
1103 tableName: TName,
1104 options?: { readonly where?: CoreWhere },
1105 ): Effect.Effect<number, StorageFailure> =>
1106 fuma.use(`${tableName}.count`, (db) => asLooseStorageDb(db).count(tableName, options)),
1107 create: <TName extends CoreTableName>(
1108 tableName: TName,
1109 row: Record<string, unknown>,
1110 ): Effect.Effect<CoreRow<TName>, StorageFailure> =>
1111 fuma.use(`${tableName}.create`, (db) =>
1112 asLooseStorageDb(db).create(tableName, row),
1113 ) as Effect.Effect<CoreRow<TName>, StorageFailure>,
1114 createMany: <TName extends CoreTableName>(
1115 tableName: TName,
1116 rows: readonly Record<string, unknown>[],
1117 ): Effect.Effect<void, StorageFailure> =>
1118 rows.length === 0
1119 ? Effect.void
1120 : fuma
1121 .use(`${tableName}.createMany`, (db) => asLooseStorageDb(db).createMany(tableName, rows))
1122 .pipe(Effect.asVoid),
1123 upsertMany: <TName extends CoreTableName>(
1124 tableName: TName,
1125 options: {
1126 readonly target: readonly string[];
1127 readonly update: readonly string[];
1128 readonly values: readonly Record<string, unknown>[];
1129 },
1130 ): Effect.Effect<void, StorageFailure> =>
1131 options.values.length === 0
1132 ? Effect.void
1133 : fuma.use(`${tableName}.upsertMany`, (db) =>
1134 asLooseStorageDb(db).upsertMany(tableName, options),
1135 ),
1136 deleteMany: <TName extends CoreTableName>(
1137 tableName: TName,
1138 options: { readonly where?: CoreWhere } = {},
1139 ): Effect.Effect<void, StorageFailure> =>
1140 fuma.use(`${tableName}.deleteMany`, (db) =>
1141 asLooseStorageDb(db).deleteMany(tableName, options),
1142 ),
1143 findFirst: <TName extends CoreTableName, const TOptions extends CoreFindFirstOptions<TName>>(
1144 tableName: TName,
1145 options: TOptions,
1146 ): Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure> =>
1147 fuma.use(`${tableName}.findFirst`, (db) =>
1148 asLooseStorageDb(db).findFirst(tableName, options),
1149 ) as Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure>,
1150 findMany: <TName extends CoreTableName, const TOptions extends CoreFindManyOptions<TName>>(
1151 tableName: TName,
1152 options: TOptions = {} as TOptions,
1153 ): Effect.Effect<readonly CoreProjectedRow<TName, TOptions["select"]>[], StorageFailure> =>
1154 fuma.use(`${tableName}.findMany`, (db) =>
1155 asLooseStorageDb(db).findMany(tableName, options),
1156 ) 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