You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
794 B
23 lines
794 B
import { QueryService } from './base'; |
|
import { DirectQueryService } from './direct'; |
|
import { GrafanaQueryService } from './grafana'; |
|
import { QueryType } from '../../connectors'; |
|
import { QueryConfig } from '../../models/query_config'; |
|
|
|
|
|
export function queryServiceFactory( |
|
queryConfig: QueryConfig, |
|
): QueryService { |
|
const classMap = { |
|
[QueryType.DIRECT]: DirectQueryService, |
|
[QueryType.GRAFANA]: GrafanaQueryService, |
|
}; |
|
const queryType = queryConfig.queryType; |
|
const datasource = queryConfig.datasource; |
|
if(classMap[queryType] === undefined) { |
|
console.error(`Queries of type ${queryType} are not supported currently`); |
|
throw new Error(`Queries of type ${queryType} are not supported currently`); |
|
} else { |
|
return new classMap[queryType](datasource); |
|
} |
|
}
|
|
|