budibase/packages/frontend-core/src/api/queries.js

86 lines
1.9 KiB
JavaScript

export const buildQueryEndpoints = API => ({
/**
* Executes a query against an external data connector.
* @param queryId the ID of the query to execute
* @param pagination pagination info for the query
* @param parameters parameters for the query
*/
executeQuery: async ({ queryId, pagination, parameters }) => {
return await API.post({
url: `/api/v2/queries/${queryId}`,
body: {
parameters,
pagination,
},
})
},
/**
* Fetches the definition of an external query.
* @param queryId the ID of thr query to fetch the definition of
*/
fetchQueryDefinition: async queryId => {
return await API.get({
url: `/api/queries/${queryId}`,
cache: true,
})
},
/**
* Gets a list of queries
*/
getQueries: async () => {
return await API.get({
url: "/api/queries",
})
},
/**
* Saves a query.
* @param query the query to save
*/
saveQuery: async query => {
return await API.post({
url: "/api/queries",
body: query,
})
},
/**
* Deletes a query
* @param queryId the ID of the query to delete
* @param queryRev the rev of the query to delete
*/
deleteQuery: async ({ queryId, queryRev }) => {
return await API.delete({
url: `/api/queries/${queryId}/${queryRev}`,
})
},
/**
* Imports a set of queries into a certain datasource
* @param datasourceId the datasource ID to import queries into
* @param data the data string of the content to import
*/
importQueries: async ({ datasourceId, data }) => {
return await API.post({
url: "/api/queries/import",
body: {
datasourceId,
data,
},
})
},
/**
* Runs a query with test parameters to see the result.
* @param query the query to run
*/
previewQuery: async query => {
return await API.post({
url: "/api/queries/preview",
body: query,
})
},
})