import { DbSetPickDefaultActionRequired, EntitySelector } from './common-types'; import { EntityIdKey, EntityIdKeys, IDbRecord } from './entity-types'; import { IDbSet, IDbSetProps } from './dbset-types'; import { DbSet } from '../context/dbset/DbSet'; import { IDataContext } from './context-types'; export interface ISplitDbSetOptions { enabled: boolean; isManaged: boolean; } export interface IDbSetBuilderParams, TExtraExclusions extends string, TResult extends IDbSet> { context: IDataContext; documentType: TDocumentType; isSplitDbSet: ISplitDbSetOptions; idKeys?: EntityIdKeys; defaults?: DbSetPickDefaultActionRequired; exclusions?: string[]; readonly: boolean; extend?: DbSetExtenderCreator[]; keyType?: DbSetKeyType; map?: PropertyMap[]; index?: string; filterSelector?: EntitySelector; } export type ConvertDateToString = T extends Date ? string : T; export type DbSetExtenderCreator, TExtraExclusions extends string, TResult extends IDbSet> = (i: DbSetExtender, args: IDbSetProps) => TResult; export type PropertyMap, TProperty extends keyof TEntity> = { property: TProperty; map: (value: ConvertDateToString, entity: TEntity) => TEntity[TProperty]; }; export interface ITerminateIdBuilder> { } export interface IChainIdBuilder> { /** * Used to build a key for the entity. Key will be built in the order * the keys or selectors are added * @param key Key or property selector */ add(key: EntityIdKey): IChainIdBuilder; } export interface IIdBuilderBase> extends IChainIdBuilder { /** * No keys, will only allow one single instance or record for the document type */ none(): ITerminateIdBuilder; /** * Key will be automatically generated */ auto(): ITerminateIdBuilder; } export type DbSetExtender, TExtraExclusions extends string = never> = new (props: IDbSetProps) => DbSet; export type DbSetKeyType = "auto" | "none" | "user-defined"; export declare class IdBuilder> implements IIdBuilderBase { private _ids; private _keyType; get Ids(): EntityIdKeys; get KeyType(): DbSetKeyType; add(key: EntityIdKey): this; none(): ITerminateIdBuilder; auto(): ITerminateIdBuilder; }