import { IDbSetBase, IDbSetProps, ISplitDbSet } from "../../../types/dbset-types"; import { EntityIdKeys, IDbRecord, OmittedEntity } from "../../../types/entity-types"; import { DbSetPickDefaultActionRequired, DbSetPickDefaultActionOptional, DeepPartial, EntitySelector } from "../../../types/common-types"; import { IDataContext } from "../../../types/context-types"; import { DbSetKeyType, DbSetExtenderCreator, PropertyMap, ISplitDbSetOptions, DbSetExtender, IDbSetBuilderParams, IIdBuilderBase, IChainIdBuilder, ITerminateIdBuilder } from "../../../types/dbset-builder-types"; export declare class SplitDbSetBuilder, TExtraExclusions extends string, TResult extends ISplitDbSet> { protected _context: IDataContext; protected _documentType: TDocumentType; protected _idKeys: EntityIdKeys; protected _keyType: DbSetKeyType; protected _defaults: DbSetPickDefaultActionRequired; protected _exclusions: string[]; protected _readonly: boolean; protected _extend: DbSetExtenderCreator[]; protected _onCreate: (dbset: IDbSetBase) => void; protected _map: PropertyMap[]; protected _index: string | undefined; protected _isSplitDbSet: ISplitDbSetOptions; protected _filterSelector: EntitySelector | null; protected _defaultExtend: (i: DbSetExtender, args: IDbSetProps) => TResult; constructor(onCreate: (dbset: IDbSetBase) => void, params: IDbSetBuilderParams); protected _buildParams(): IDbSetBuilderParams; /** * Makes all entities returned from the underlying database readonly. Entities cannot be updates, only adding or removing is available. * @returns DbSetBuilder */ readonly(): SplitDbSetBuilder, TExtraExclusions, ISplitDbSet, TExtraExclusions>>; /** * Fluent API for building the documents key. Key will be built in the order * keys are added * @param builder Fluent API * @returns DbSetBuilder */ keys(builder: (b: IIdBuilderBase) => (IChainIdBuilder | ITerminateIdBuilder)): SplitDbSetBuilder; /** * Set default separately for add and retrieval. This is useful to retroactively add new properties * that are not nullable or to supply a default to an excluded property. Default's will only be * set when the property does not exist or is excluded * @param value Pick one or more properties and set their default value * @returns DbSetBuilder */ defaults(value: DbSetPickDefaultActionOptional): SplitDbSetBuilder; /** * Set default values for both add and retrieval of entities. This is useful to retroactively add new properties * that are not nullable or to supply a default to an excluded property. Default's will only be * set when the property does not exist or is excluded * @param value Pick one or more properties and set their default value * @returns DbSetBuilder */ defaults(value: DeepPartial>): SplitDbSetBuilder; /** * Exclude properties from the DbSet.add(). This is useful for defaults. Properties can be excluded * and default values can be set making it easier to add an entity. Can be called one or many times to * exclude one or more properties * @param exclusions Property Exclusions * @returns DbSetBuilder */ exclude(...exclusions: T[]): SplitDbSetBuilder>; map(propertyMap: PropertyMap): SplitDbSetBuilder; /** * Specify the name of the index to use for all queries * @param name Name of the index * @returns DbSetBuilder */ useIndex(name: string): SplitDbSetBuilder; extend>(extend: (i: new (props: IDbSetProps) => TResult, args: IDbSetProps) => TExtension): SplitDbSetBuilder; /** * Must call to fully create the DbSet. * @returns new DbSet */ create(): TResult; }