import BackendConnector = require("./BackendConnector"); import ActionUrlSet = require('./ActionUrlSet') import DataModel = require("./DataModel"); import ActionUrlConfig = require("./ActionUrlConfig"); import DataProviderScopeSet = require("./DataProviderScopeSet"); import ObjectMap = require("./ObjectMap"); const DEFAULT_SCOPE_NAME = 'index' abstract class DataProviderConfig { private backendConnector:BackendConnector private dataProviderName:string constructor(dataProviderName:string, backendConnector:BackendConnector) { this.dataProviderName = dataProviderName this.backendConnector = backendConnector } public abstract getScopes:() => DataProviderScopeSet public getActionUrlConfig = ():ActionUrlConfig => { return null } getDataProviderName():string { return this.dataProviderName } getBackendConnector():BackendConnector { return this.backendConnector } public getUpdatedAtFieldName = ():string => { return 'updated_at' } public getIdentityRelevantAttributeNames = ():string[] => { return [ 'id' ] } public getSelectionRelevantAttributeNames = ():string[] => { return [ 'id' ] } public getNewInstanceDataModelScopeNames = ():string[] => { return [ DEFAULT_SCOPE_NAME ] } getInitialRequestMoment = ():DataProviderInitialRequestMoment => { return 'on_first_collection' } public getDataLifetime = ():Duration => { return new Duration(1000) } public getRefetchInterval = ():Duration => { return new Duration(1000) } public getActionUrlSet = ():ActionUrlSet => { return new ActionUrlSet(this.getActionUrlConfig()) } public prepareForServer = (dataModel:DataModel):ObjectMap => { return dataModel.mapDataOut(dataModel.getChangedProperties()) } //getLoadedTimeRanges|propertyName... evtl. in Wrapper?! } export = DataProviderConfig