(fuma: ReturnType<typeof makeFumaClient>)
| 989 | const asLooseStorageDb = (db: unknown): LooseStorageDb => db as LooseStorageDb; |
| 990 | |
| 991 | const 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 | |
| 1046 | type CoreDb = ReturnType<typeof makeCoreDb>; |
| 1047 |
no test coverage detected