1
0
Fork 0
mirror of synced 2024-09-20 19:33:10 +12:00
budibase/packages/client/src/api/datasources.js

36 lines
1 KiB
JavaScript
Raw Normal View History

import { fetchTableData } from "./tables"
import { fetchViewData } from "./views"
import { fetchRelationshipData } from "./relationships"
2020-12-31 01:58:39 +13:00
import { fetchQueryData } from "./queries"
import { enrichRows } from "./rows"
/**
* Fetches all rows for a particular Budibase data source.
*/
export const fetchDatasource = async (datasource, dataContext) => {
if (!datasource || !datasource.type) {
return []
}
// Fetch all rows in data source
const { type, tableId, fieldName } = datasource
let rows = []
if (type === "table") {
rows = await fetchTableData(tableId)
} else if (type === "view") {
rows = await fetchViewData(datasource)
2020-12-19 07:19:43 +13:00
} else if (type === "query") {
2020-12-31 01:58:39 +13:00
// TODO: map to schema
return await fetchQueryData(datasource)
} else if (type === "link") {
const row = dataContext[datasource.providerId]
rows = await fetchRelationshipData({
rowId: row?._id,
tableId: row?.tableId,
fieldName,
})
}
// Enrich rows
return await enrichRows(rows, tableId)
}