import { type Context, Effect, type NonEmptyReadonlyArray, type S } from "effect-app"; 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>; (itemType: ItemType, schema: S.Codec, options: Omit, "idKey">): Effect.Effect, RPublish, RCtx>, E, RInitial | StoreMaker | RepositoryRegistry>; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVJlcG8uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9Nb2RlbC9SZXBvc2l0b3J5L21ha2VSZXBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxLQUFLLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNyRixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDN0QsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDckQsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQWMsTUFBTSxVQUFVLENBQUE7QUFFOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUU5QyxNQUFNLFdBQVcsaUJBQWlCLENBQ2hDLEtBQUssU0FBUyxNQUFNLENBQUMsR0FBRyxNQUFNLE9BQU8sRUFDckMsT0FBTyxTQUFTLFdBQVcsRUFDM0IsQ0FBQyxFQUNELFFBQVEsU0FBUyxNQUFNLEVBQ3ZCLEdBQUcsR0FBRyxLQUFLLEVBQ1gsUUFBUSxHQUFHLEtBQUssRUFDaEIsQ0FBQyxHQUFHLEtBQUssRUFDVCxRQUFRLEdBQUcsS0FBSyxFQUNoQixJQUFJLEdBQUcsS0FBSyxFQUNaLE9BQU8sR0FBRyxLQUFLO0lBRWY7Ozs7T0FJRztJQUNILEtBQUssRUFBRSxLQUFLLENBQUE7SUFDWjs7O09BR0c7SUFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssT0FBTyxDQUFBO0lBQy9CLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsR0FBRztRQUN0RCxjQUFjLENBQUMsRUFBRSxD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