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

Function makeCoreDb

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

Source from the content-addressed store, hash-verified

712const asLooseStorageDb = (db: unknown): LooseStorageDb => db as LooseStorageDb;
713
714const makeCoreDb = (fuma: ReturnType<typeof makeFumaClient>) => ({
715 count: <TName extends CoreTableName>(
716 tableName: TName,
717 options?: { readonly where?: CoreWhere },
718 ): Effect.Effect<number, StorageFailure> =>
719 fuma.use(`${tableName}.count`, (db) => asLooseStorageDb(db).count(tableName, options)),
720 create: <TName extends CoreTableName>(
721 tableName: TName,
722 row: Record<string, unknown>,
723 ): Effect.Effect<CoreRow<TName>, StorageFailure> =>
724 fuma.use(`${tableName}.create`, (db) =>
725 asLooseStorageDb(db).create(tableName, row),
726 ) as Effect.Effect<CoreRow<TName>, StorageFailure>,
727 createMany: <TName extends CoreTableName>(
728 tableName: TName,
729 rows: readonly Record<string, unknown>[],
730 ): Effect.Effect<void, StorageFailure> =>
731 rows.length === 0
732 ? Effect.void
733 : fuma
734 .use(`${tableName}.createMany`, (db) => asLooseStorageDb(db).createMany(tableName, rows))
735 .pipe(Effect.asVoid),
736 deleteMany: <TName extends CoreTableName>(
737 tableName: TName,
738 options: { readonly where?: CoreWhere } = {},
739 ): Effect.Effect<void, StorageFailure> =>
740 fuma.use(`${tableName}.deleteMany`, (db) =>
741 asLooseStorageDb(db).deleteMany(tableName, options),
742 ),
743 findFirst: <TName extends CoreTableName, const TOptions extends CoreFindFirstOptions<TName>>(
744 tableName: TName,
745 options: TOptions,
746 ): Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure> =>
747 fuma.use(`${tableName}.findFirst`, (db) =>
748 asLooseStorageDb(db).findFirst(tableName, options),
749 ) as Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure>,
750 findMany: <TName extends CoreTableName, const TOptions extends CoreFindManyOptions<TName>>(
751 tableName: TName,
752 options: TOptions = {} as TOptions,
753 ): Effect.Effect<readonly CoreProjectedRow<TName, TOptions["select"]>[], StorageFailure> =>
754 fuma.use(`${tableName}.findMany`, (db) =>
755 asLooseStorageDb(db).findMany(tableName, options),
756 ) as Effect.Effect<readonly CoreProjectedRow<TName, TOptions["select"]>[], StorageFailure>,
757 updateMany: <TName extends CoreTableName>(
758 tableName: TName,
759 options: {
760 readonly where?: CoreWhere;
761 readonly set: Record<string, unknown>;
762 },
763 ): Effect.Effect<void, StorageFailure> =>
764 fuma.use(`${tableName}.updateMany`, (db) =>
765 asLooseStorageDb(db).updateMany(tableName, options),
766 ),
767});
768
769type CoreDb = ReturnType<typeof makeCoreDb>;
770

Callers 1

createExecutorFunction · 0.85

Calls 2

asLooseStorageDbFunction · 0.85
countMethod · 0.80

Tested by

no test coverage detected