Type relationship endpoints
This commit is contained in:
parent
ac05ccd6a8
commit
e938fddeed
|
@ -1,21 +0,0 @@
|
|||
export const buildRelationshipEndpoints = API => ({
|
||||
/**
|
||||
* Fetches related rows for a certain field of a certain row.
|
||||
* @param tableId the ID of the table to fetch from
|
||||
* @param rowId the ID of the row to fetch related rows for
|
||||
* @param fieldName the name of the relationship field
|
||||
*/
|
||||
fetchRelationshipData: async ({ tableId, rowId, fieldName }) => {
|
||||
if (!tableId || !rowId) {
|
||||
return []
|
||||
}
|
||||
const response = await API.get({
|
||||
url: `/api/${tableId}/${rowId}/enrich?field=${fieldName}`,
|
||||
})
|
||||
if (!fieldName) {
|
||||
return response || []
|
||||
} else {
|
||||
return response[fieldName] || []
|
||||
}
|
||||
},
|
||||
})
|
|
@ -0,0 +1,31 @@
|
|||
import { Row } from "@budibase/types"
|
||||
import { BaseAPIClient } from "./types"
|
||||
|
||||
export interface RelationshipEndpoints {
|
||||
fetchRelationshipData: (
|
||||
sourceId: string,
|
||||
rowId: string,
|
||||
fieldName?: string
|
||||
) => Promise<Row[]>
|
||||
}
|
||||
|
||||
export const buildRelationshipEndpoints = (
|
||||
API: BaseAPIClient
|
||||
): RelationshipEndpoints => ({
|
||||
/**
|
||||
* Fetches related rows for a certain field of a certain row.
|
||||
* @param sourceId the ID of the table to fetch from
|
||||
* @param rowId the ID of the row to fetch related rows for
|
||||
* @param fieldName the name of the relationship field
|
||||
*/
|
||||
fetchRelationshipData: async (sourceId, rowId, fieldName) => {
|
||||
const response = await API.get<Row>({
|
||||
url: `/api/${sourceId}/${rowId}/enrich?field=${fieldName}`,
|
||||
})
|
||||
if (!fieldName) {
|
||||
return [response]
|
||||
} else {
|
||||
return response[fieldName] || []
|
||||
}
|
||||
},
|
||||
})
|
|
@ -20,6 +20,7 @@ import { OtherEndpoints } from "./other"
|
|||
import { PermissionEndpoints } from "./permissions"
|
||||
import { PluginEndpoins } from "./plugins"
|
||||
import { QueryEndpoints } from "./queries"
|
||||
import { RelationshipEndpoints } from "./relationships"
|
||||
|
||||
export enum HTTPMethod {
|
||||
POST = "POST",
|
||||
|
@ -111,4 +112,5 @@ export type APIClient = BaseAPIClient &
|
|||
OtherEndpoints &
|
||||
PermissionEndpoints &
|
||||
PluginEndpoins &
|
||||
QueryEndpoints & { [key: string]: any }
|
||||
QueryEndpoints &
|
||||
RelationshipEndpoints & { [key: string]: any }
|
||||
|
|
|
@ -3,13 +3,16 @@ import DataFetch from "./DataFetch.js"
|
|||
export default class RelationshipFetch extends DataFetch {
|
||||
async getData() {
|
||||
const { datasource } = this.options
|
||||
if (!datasource?.rowId || !datasource?.rowTableId) {
|
||||
return { rows: [] }
|
||||
}
|
||||
try {
|
||||
const res = await this.API.fetchRelationshipData({
|
||||
rowId: datasource?.rowId,
|
||||
tableId: datasource?.rowTableId,
|
||||
fieldName: datasource?.fieldName,
|
||||
})
|
||||
return { rows: res || [] }
|
||||
const res = await this.API.fetchRelationshipData(
|
||||
datasource.rowTableId,
|
||||
datasource.rowId,
|
||||
datasource.fieldName
|
||||
)
|
||||
return { rows: res }
|
||||
} catch (error) {
|
||||
return { rows: [] }
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue