import {FeatureCollection} from '@turf/helpers'; export type StoreType = 'postgis' | 'geojson'; export interface Store { type: StoreType; } export interface GeoJSONStore extends Store { type : 'geojson'; path: string; } export interface PostgisStore extends Store { type : 'postgis'; host: string; port: number; user: string; password: string; database: string; } export interface FeatureTypeConfig { name? : string; store: T;// GeoJSONStore | PostgisStore; } export interface SourceFeatureTypeConfig { geometryId: string|number; } export interface TargetFeatureTypeConfig { horizontalTimestampColumns?: boolean; // default is false createGeometry?: boolean; // default is: true storeZeroValues?: boolean; // default is true computeValuePerArea?: boolean; // default is false transformToWebmercator? :boolean; // default is false } export interface GeoJSONFeatureTypeConfig extends FeatureTypeConfig { // store: GeoJSONStore; } export interface PostgisFeatureTypeConfig extends FeatureTypeConfig { name: string; // store: PostgisStore; schema?: string; // default is: public geometryColumn: string; } export interface SourceGeoJSONFeatureTypeConfig extends GeoJSONFeatureTypeConfig, SourceFeatureTypeConfig {} export interface SourcePostgisFeatureTypeConfig extends PostgisFeatureTypeConfig, SourceFeatureTypeConfig { fetchSize?: number; // default is 0 ( -> compute all in one ) cursor?: number | string; } export interface TargetGeoJSONFeatureTypeConfig extends GeoJSONFeatureTypeConfig, TargetFeatureTypeConfig {} export interface TargetPostgisFeatureTypeConfig extends PostgisFeatureTypeConfig, TargetFeatureTypeConfig { createIndexes?: boolean; } export type OhsomeQueryConfigTypes = 'node' | 'way' | 'relation' | 'node,way' | 'node,relation' | 'way,relation' | 'node,way,relation' | 'point' | 'line' | 'polygon' | 'point,line' | 'point,polygon' | 'line,polygon' | 'point,line,polygon' | ''; export type OhsomeQueryConfigFormat = 'json' | 'csv' | undefined; export interface OhsomeQueryConfig { queryType: string; // e.g. elements/count for elements/count/groupBy/boundary keys?: string; // comma seperated values e.g.['highway','maxspeed'].join(), values?: string; // comma seperated values e.g. ['','50'].join(), types: OhsomeQueryConfigTypes; time: string; // e.g. ISO8601 start/end/interval_period '2015-01-01/2017-01-01/P1Y' bpolys?: FeatureCollection | string; bboxes?: string; bcircles?: string; format?: OhsomeQueryConfigFormat; // default is 'csv'. Others are 'json' | ('geojson' -> not yet supported) showMetadata?: boolean; } export interface Ohsome2XConfig { ohsomeApiUrl?: string; source: SourceGeoJSONFeatureTypeConfig | SourcePostgisFeatureTypeConfig; target: TargetGeoJSONFeatureTypeConfig | TargetPostgisFeatureTypeConfig; ohsomeQuery: OhsomeQueryConfig; }