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

Function makeCoreDb

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

Source from the content-addressed store, hash-verified

690const asLooseStorageDb = (db: unknown): LooseStorageDb => db as LooseStorageDb;
691
692const makeCoreDb = (fuma: ReturnType<typeof makeFumaClient>) => ({
693 count: <TName extends CoreTableName>(
694 tableName: TName,
695 options?: { readonly where?: CoreWhere },
696 ): Effect.Effect<number, StorageFailure> =>
697 fuma.use(`${tableName}.count`, (db) => asLooseStorageDb(db).count(tableName, options)),
698 create: <TName extends CoreTableName>(
699 tableName: TName,
700 row: Record<string, unknown>,
701 ): Effect.Effect<CoreRow<TName>, StorageFailure> =>
702 fuma.use(`${tableName}.create`, (db) =>
703 asLooseStorageDb(db).create(tableName, row),
704 ) as Effect.Effect<CoreRow<TName>, StorageFailure>,
705 createMany: <TName extends CoreTableName>(
706 tableName: TName,
707 rows: readonly Record<string, unknown>[],
708 ): Effect.Effect<void, StorageFailure> =>
709 rows.length === 0
710 ? Effect.void
711 : fuma
712 .use(`${tableName}.createMany`, (db) => asLooseStorageDb(db).createMany(tableName, rows))
713 .pipe(Effect.asVoid),
714 deleteMany: <TName extends CoreTableName>(
715 tableName: TName,
716 options: { readonly where?: CoreWhere } = {},
717 ): Effect.Effect<void, StorageFailure> =>
718 fuma.use(`${tableName}.deleteMany`, (db) =>
719 asLooseStorageDb(db).deleteMany(tableName, options),
720 ),
721 findFirst: <TName extends CoreTableName, const TOptions extends CoreFindFirstOptions<TName>>(
722 tableName: TName,
723 options: TOptions,
724 ): Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure> =>
725 fuma.use(`${tableName}.findFirst`, (db) =>
726 asLooseStorageDb(db).findFirst(tableName, options),
727 ) as Effect.Effect<CoreProjectedRow<TName, TOptions["select"]> | null, StorageFailure>,
728 findMany: <TName extends CoreTableName, const TOptions extends CoreFindManyOptions<TName>>(
729 tableName: TName,
730 options: TOptions = {} as TOptions,
731 ): Effect.Effect<readonly CoreProjectedRow<TName, TOptions["select"]>[], StorageFailure> =>
732 fuma.use(`${tableName}.findMany`, (db) =>
733 asLooseStorageDb(db).findMany(tableName, options),
734 ) as Effect.Effect<readonly CoreProjectedRow<TName, TOptions["select"]>[], StorageFailure>,
735 updateMany: <TName extends CoreTableName>(
736 tableName: TName,
737 options: {
738 readonly where?: CoreWhere;
739 readonly set: Record<string, unknown>;
740 },
741 ): Effect.Effect<void, StorageFailure> =>
742 fuma.use(`${tableName}.updateMany`, (db) =>
743 asLooseStorageDb(db).updateMany(tableName, options),
744 ),
745});
746
747type CoreDb = ReturnType<typeof makeCoreDb>;
748

Callers 1

createExecutorFunction · 0.85

Calls 2

asLooseStorageDbFunction · 0.85
countMethod · 0.80

Tested by

no test coverage detected