import type * as Scope from "effect/Scope"; import type { NonEmptyReadonlyArray } from "../../Array.js"; import type * as Context from "../../Context.js"; import * as Effect from "../../Effect.js"; import type * as S from "../../Schema.js"; import type { StoreConfig, StoreMaker } from "../../Store.js"; import type { FieldValues } from "../filter/types.js"; import { type ExtendedRepository } from "./ext.js"; import { RepositoryRegistry } from "./Registry.js"; import type { Repository } from "./service.js"; export interface RepositoryOptions { /** * Specify the idKey of the Type side, if it's different from the default "id". * Does not change the Encoded side, which is always "id" to support database drivers. * At this time as queries are operating on the Encoded side, the queries must still specify "id" regardless. */ idKey: IdKey; /** * just in time Migration: for complex migrations that aren't just default simple values * use the config.defaultValues instead for simple default values */ jitM?: (pm: Encoded) => Encoded; config?: Omit, "partitionValue"> & { partitionValue?: (e?: Encoded) => string; }; /** * Optional handler to be able to publish events after successfull save. */ publishEvents?: (evt: NonEmptyReadonlyArray) => Effect.Effect; /** * Optional creator for initial data in the table when it's created for the first itme. */ makeInitial?: Effect.Effect | undefined; /** * Optional context to be provided to Schema decode/encode. * Useful for effectful transformations like XWithItems, where items is a transformation retrieving elements from another database table or other source. */ schemaContext?: Context.Context; overrides?: (repo: Repository, RPublish, RCtx>) => Repository, RPublish, RCtx>; } /** * Create a repository instance. * @param itemType an identifier used for the table name and e.g NotFoundError * @param schema the Schema used for this Repository * @param options @see RepositoryOptions * @returns a Repository */ export declare const makeRepo: { (itemType: ItemType, schema: S.Codec, options: RepositoryOptions): Effect.Effect, RPublish, RCtx>, E, RInitial | StoreMaker | RepositoryRegistry | Scope.Scope>; (itemType: ItemType, schema: S.Codec, options: Omit, "idKey">): Effect.Effect, RPublish, RCtx>, E, RInitial | StoreMaker | RepositoryRegistry | Scope.Scope>; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVJlcG8uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9Nb2RlbC9SZXBvc2l0b3J5L21ha2VSZXBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sS0FBSyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUE7QUFDMUMsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMzRCxPQUFPLEtBQUssS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUE7QUFDaEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQTtBQUN6QyxPQUFPLEtBQUssS0FBSyxDQUFDLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzdELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFjLE1BQU0sVUFBVSxDQUFBO0FBRTlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFOUMsTUFBTSxXQUFXLGlCQUFpQixDQUNoQyxLQUFLLFNBQVMsTUFBTSxDQUFDLEdBQUcsTUFBTSxPQUFPLEVBQ3JDLE9BQU8sU0FBUyxXQUFXLEVBQzNCLENBQUMsRUFDRCxRQUFRLFNBQVMsTUFBTSxFQUN2QixHQUFHLEdBQUcsS0FBSyxFQUNYLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLENBQUMsR0FBRyxLQUFLLEVBQ1QsUUFBUSxHQUFHLEtBQUssRUFDaEIsSUFBSSxHQUFHLEtBQUssRUFDWixPQUFPLEdBQUcsS0FBSztJQUVmOzs7O09BSUc7SUFDSCxLQUFLLEVBQUUsS0FBSyxDQUFBO0lBQ1o7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FB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