UNPKG

phibernate

Version:

Client side ORM and Delta Tracker for Relational data

78 lines (62 loc) 2.04 kB
/** * Created by Papa on 5/28/2016. */ import {LocalStoreType, localStore, LocalStoreSetupInfo} from "../localStore/LocalStoreApi"; import {IdGeneration} from "../localStore/IdGenerator"; export interface PHLocalStoreConfig { type: LocalStoreType | string; idGeneration: IdGeneration; } export interface ILocalStoreConfig { setupInfo: LocalStoreSetupInfo; } export class CommonLocalStoreConfig implements ILocalStoreConfig { setupInfo: LocalStoreSetupInfo; constructor( localStoreName: string, type: LocalStoreType, idGeneration: IdGeneration ) { this.setupInfo = { name: localStoreName, type: type, idGeneration: idGeneration }; } } export function createLocalStoreConfig( localStoreName: string, config: PHLocalStoreConfig ): ILocalStoreConfig { if (!config.type) { throw `Local Store Type is not specified`; } if (!config.idGeneration) { throw `Id Generation startegy is not specified`; } let type: LocalStoreType; if (typeof config.type === "string") { type = localStore.type.getValue(<string>config.type); } else { // Verify the type localStore.type.getName(<LocalStoreType>config.type); type = <LocalStoreType>config.type; } switch (type) { case LocalStoreType.SQLITE_CORDOVA: return new SqLiteCordovaLocalStoreConfig(localStoreName, <LocalStoreType>config.type, config.idGeneration); case LocalStoreType.POUCH_DB: throw `PouchDb is not currently supported`; // return new PouchDbLocalStoreConfig(localStoreName, <LocalStoreType>config.type); default: throw `Unsupported LocalStoreType: ${type}`; } } export interface IPouchDbLocalStoreConfig extends ILocalStoreConfig { } export class PouchDbLocalStoreConfig extends CommonLocalStoreConfig implements IPouchDbLocalStoreConfig { } export interface ISqLiteCordovaLocalStoreConfig extends ILocalStoreConfig { } export class SqLiteCordovaLocalStoreConfig extends CommonLocalStoreConfig implements SqLiteCordovaLocalStoreConfig { }