UNPKG

tsbase

Version:

Base class libraries for TypeScript

58 lines (57 loc) 2.14 kB
import { Queryable } from '../../Collections/Queryable/Queryable'; import { Result } from '../../Patterns/Result/Result'; import { Validator } from '../../Patterns/Validator/Validator'; import { ISerializer } from '../../Utility/Serialization/ISerializer'; import { IPersister } from './Persisters/IPersister'; /** * An extension of Queryable<T> that incorporates persistence functionality * provided by a class implementing IPersister. Previously persisted data is * loaded on instantiation using the default persister's "Retrieve" method. */ export declare class Repository<T> extends Queryable<T> { protected constructor(); /** * A set of rules the repository will check against when new elements are added * Rules that have a severity of "Error" will not be added */ get PendingChanges(): { PendingSave: Queryable<T>; PendingDeletion: Queryable<T>; }; protected savedData: { raw: string; referential: T[]; }; protected persister: IPersister<T>; protected validator: Validator<T>; protected serializer?: ISerializer; protected serializeAs?: { new (): T; }; static New<T>(persister: IPersister<T>, validator?: Validator<T>, serializer?: ISerializer, serializeAs?: { new (): T; }): Repository<T>; /** * Calls the underlying persister's "Persist" method saving the data currently in the list */ SaveChanges(): Result<null>; /** * Override for default push that enforces validation */ push(...items: T[]): number; /** * Calls the underlying persister's "Purge" method deleting any data previously persisted */ PurgeData(): void; /** * Returns a collection of elements that have not been saved */ GetUnsavedElements(): Queryable<T>; /** * Returns a collection of elements that have not been removed from persistence */ GetUnpurgedElements(): Queryable<T>; protected getSerializedInstancesFromInitialData(initialData: Array<any>): Queryable<T>; protected itemIsValid(item: T): Result<null>; protected setSavedData(): void; }