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

Function makeCoreDb

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

Source from the content-addressed store, hash-verified

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

Callers 1

createExecutorFunction · 0.85

Calls 2

asLooseStorageDbFunction · 0.85
countMethod · 0.80

Tested by

no test coverage detected