Add dedicated endpoint for fetching view definitions
This commit is contained in:
parent
a6da5fd2bb
commit
c115a87cd6
|
@ -1,4 +1,13 @@
|
|||
export const buildViewV2Endpoints = API => ({
|
||||
/**
|
||||
* Create a new view
|
||||
* @param viewId the ID of the view to fetch
|
||||
*/
|
||||
fetchDefinition: async viewId => {
|
||||
return await API.get({
|
||||
url: `/api/v2/views/${viewId}`,
|
||||
})
|
||||
},
|
||||
/**
|
||||
* Create a new view
|
||||
* @param view the view object
|
||||
|
|
|
@ -18,16 +18,13 @@ export default class ViewV2Fetch extends DataFetch {
|
|||
}
|
||||
|
||||
async getDefinition(datasource) {
|
||||
if (!datasource?.id) {
|
||||
return null
|
||||
}
|
||||
try {
|
||||
const table = await this.API.fetchTableDefinition(datasource.tableId)
|
||||
return Object.values(table.views || {}).find(
|
||||
view => view.id === datasource.id
|
||||
)
|
||||
const res = await this.API.viewV2.fetchDefinition(datasource.id)
|
||||
return res?.data
|
||||
} catch (error) {
|
||||
this.store.update(state => ({
|
||||
...state,
|
||||
error,
|
||||
}))
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,6 +39,12 @@ async function parseSchema(view: CreateViewRequest) {
|
|||
return finalViewSchema
|
||||
}
|
||||
|
||||
export async function get(ctx: Ctx<void, ViewResponse>) {
|
||||
ctx.body = {
|
||||
data: await sdk.views.get(ctx.params.viewId, { enriched: true })
|
||||
}
|
||||
}
|
||||
|
||||
export async function create(ctx: Ctx<CreateViewRequest, ViewResponse>) {
|
||||
const view = ctx.request.body
|
||||
const { tableId } = view
|
||||
|
|
|
@ -8,6 +8,15 @@ import { permissions } from "@budibase/backend-core"
|
|||
const router: Router = new Router()
|
||||
|
||||
router
|
||||
.get(
|
||||
"/api/v2/views/:viewId",
|
||||
paramResource("viewId"),
|
||||
authorized(
|
||||
permissions.PermissionType.TABLE,
|
||||
permissions.PermissionLevel.READ
|
||||
),
|
||||
viewController.v2.get
|
||||
)
|
||||
.post(
|
||||
"/api/v2/views",
|
||||
authorized(permissions.BUILDER),
|
||||
|
|
|
@ -5,7 +5,10 @@ import { cloneDeep } from "lodash"
|
|||
import sdk from "../../../sdk"
|
||||
import * as utils from "../../../db/utils"
|
||||
|
||||
export async function get(viewId: string): Promise<ViewV2> {
|
||||
export async function get(
|
||||
viewId: string,
|
||||
opts?: { enriched: boolean }
|
||||
): Promise<ViewV2> {
|
||||
const { tableId } = utils.extractViewInfoFromID(viewId)
|
||||
const table = await sdk.tables.getTable(tableId)
|
||||
const views = Object.values(table.views!)
|
||||
|
@ -13,7 +16,11 @@ export async function get(viewId: string): Promise<ViewV2> {
|
|||
if (!found) {
|
||||
throw new Error("No view found")
|
||||
}
|
||||
return found as ViewV2
|
||||
if (opts?.enriched) {
|
||||
return enrichSchema(found, table.schema) as ViewV2
|
||||
} else {
|
||||
return found as ViewV2
|
||||
}
|
||||
}
|
||||
|
||||
export async function create(
|
||||
|
|
Loading…
Reference in New Issue