2021-01-12 04:17:28 +00:00
|
|
|
import { DEFAULT_TEST_DATA_SOURCE_TIMEOUT_MS } from "constants/ApiConstants";
|
2021-03-22 09:22:24 +00:00
|
|
|
import API from "api/Api";
|
2019-11-07 09:32:38 +00:00
|
|
|
import { GenericApiResponse } from "./ApiResponses";
|
|
|
|
|
import { AxiosPromise } from "axios";
|
|
|
|
|
|
2021-01-12 04:17:28 +00:00
|
|
|
import { DatasourceAuthentication, Datasource } from "entities/Datasource";
|
2019-11-07 09:32:38 +00:00
|
|
|
export interface CreateDatasourceConfig {
|
|
|
|
|
name: string;
|
|
|
|
|
pluginId: string;
|
|
|
|
|
datasourceConfiguration: {
|
|
|
|
|
url: string;
|
2020-04-28 06:52:53 +00:00
|
|
|
databaseName?: string;
|
|
|
|
|
authentication?: DatasourceAuthentication;
|
2019-11-07 09:32:38 +00:00
|
|
|
};
|
2020-03-06 04:59:24 +00:00
|
|
|
//Passed for logging purposes.
|
2020-04-28 06:52:53 +00:00
|
|
|
appName?: string;
|
2019-11-07 09:32:38 +00:00
|
|
|
}
|
|
|
|
|
|
2021-01-12 04:17:28 +00:00
|
|
|
export interface EmbeddedRestDatasourceRequest {
|
|
|
|
|
datasourceConfiguration: { url: string };
|
|
|
|
|
invalids: Array<string>;
|
|
|
|
|
isValid: boolean;
|
|
|
|
|
name: string;
|
|
|
|
|
organizationId: string;
|
|
|
|
|
pluginId: string;
|
|
|
|
|
}
|
|
|
|
|
|
2021-08-20 06:57:01 +00:00
|
|
|
type executeQueryData = Array<{ key?: string; value?: string }>;
|
2021-07-29 08:13:10 +00:00
|
|
|
|
|
|
|
|
export interface executeDatasourceQueryRequest {
|
|
|
|
|
datasourceId: string;
|
|
|
|
|
data: executeQueryData;
|
|
|
|
|
}
|
|
|
|
|
|
2019-11-07 09:32:38 +00:00
|
|
|
class DatasourcesApi extends API {
|
|
|
|
|
static url = "v1/datasources";
|
|
|
|
|
|
2020-06-17 10:19:56 +00:00
|
|
|
static fetchDatasources(
|
|
|
|
|
orgId: string,
|
|
|
|
|
): AxiosPromise<GenericApiResponse<Datasource[]>> {
|
|
|
|
|
return API.get(DatasourcesApi.url + `?organizationId=${orgId}`);
|
2019-11-07 09:32:38 +00:00
|
|
|
}
|
|
|
|
|
|
2020-11-03 13:05:40 +00:00
|
|
|
static createDatasource(datasourceConfig: Partial<Datasource>): Promise<any> {
|
2019-11-07 09:32:38 +00:00
|
|
|
return API.post(DatasourcesApi.url, datasourceConfig);
|
|
|
|
|
}
|
2020-04-28 06:52:53 +00:00
|
|
|
|
2020-11-03 13:05:40 +00:00
|
|
|
static testDatasource(datasourceConfig: Partial<Datasource>): Promise<any> {
|
2020-05-05 12:16:16 +00:00
|
|
|
return API.post(`${DatasourcesApi.url}/test`, datasourceConfig, undefined, {
|
2020-05-07 08:07:29 +00:00
|
|
|
timeout: DEFAULT_TEST_DATA_SOURCE_TIMEOUT_MS,
|
2020-05-05 12:16:16 +00:00
|
|
|
});
|
2020-04-28 06:52:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static updateDatasource(
|
|
|
|
|
datasourceConfig: Partial<Datasource>,
|
|
|
|
|
id: string,
|
2020-11-03 13:05:40 +00:00
|
|
|
): Promise<any> {
|
2020-04-28 06:52:53 +00:00
|
|
|
return API.put(DatasourcesApi.url + `/${id}`, datasourceConfig);
|
|
|
|
|
}
|
2020-04-29 10:03:56 +00:00
|
|
|
|
2020-11-03 13:05:40 +00:00
|
|
|
static deleteDatasource(id: string): Promise<any> {
|
2020-04-29 10:03:56 +00:00
|
|
|
return API.delete(DatasourcesApi.url + `/${id}`);
|
|
|
|
|
}
|
2020-09-21 09:11:42 +00:00
|
|
|
|
2020-09-29 04:17:25 +00:00
|
|
|
static fetchDatasourceStructure(
|
|
|
|
|
id: string,
|
|
|
|
|
ignoreCache = false,
|
2020-11-03 13:05:40 +00:00
|
|
|
): Promise<any> {
|
2020-09-29 04:17:25 +00:00
|
|
|
return API.get(
|
|
|
|
|
DatasourcesApi.url + `/${id}/structure?ignoreCache=${ignoreCache}`,
|
|
|
|
|
);
|
2020-09-21 09:11:42 +00:00
|
|
|
}
|
2021-07-07 03:46:16 +00:00
|
|
|
|
|
|
|
|
static fetchMockDatasources(): AxiosPromise<
|
|
|
|
|
GenericApiResponse<Datasource[]>
|
|
|
|
|
> {
|
|
|
|
|
return API.get(DatasourcesApi.url + "/mocks");
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-08 05:59:11 +00:00
|
|
|
static addMockDbToDatasources(
|
|
|
|
|
name: string,
|
|
|
|
|
organizationId: string,
|
|
|
|
|
pluginId: string,
|
2021-07-08 10:33:41 +00:00
|
|
|
packageName: string,
|
2021-07-08 05:59:11 +00:00
|
|
|
): Promise<any> {
|
|
|
|
|
return API.post(DatasourcesApi.url + `/mocks`, {
|
|
|
|
|
name,
|
|
|
|
|
organizationId,
|
|
|
|
|
pluginId,
|
2021-07-08 10:33:41 +00:00
|
|
|
packageName,
|
2021-07-08 05:59:11 +00:00
|
|
|
});
|
2021-07-07 03:46:16 +00:00
|
|
|
}
|
2021-07-29 08:13:10 +00:00
|
|
|
|
|
|
|
|
static executeDatasourceQuery({
|
|
|
|
|
data,
|
|
|
|
|
datasourceId,
|
|
|
|
|
}: executeDatasourceQueryRequest) {
|
|
|
|
|
return API.put(
|
|
|
|
|
DatasourcesApi.url + `/datasource-query` + `/${datasourceId}`,
|
|
|
|
|
data,
|
|
|
|
|
);
|
|
|
|
|
}
|
2019-11-07 09:32:38 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default DatasourcesApi;
|