tsbase
Version:
Base class libraries for TypeScript
58 lines (57 loc) • 2.15 kB
TypeScript
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: Array<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;
}