49 lines
1019 B
TypeScript
49 lines
1019 B
TypeScript
import { Table } from "@budibase/types"
|
|
import DataFetch from "./DataFetch"
|
|
|
|
interface RelationshipDatasource {
|
|
tableId: string
|
|
rowId: string
|
|
rowTableId: string
|
|
fieldName: string
|
|
}
|
|
|
|
export default class RelationshipFetch extends DataFetch<
|
|
RelationshipDatasource,
|
|
Table
|
|
> {
|
|
async getDefinition() {
|
|
const { datasource } = this.options
|
|
|
|
if (!datasource?.tableId) {
|
|
return null
|
|
}
|
|
try {
|
|
return await this.API.fetchTableDefinition(datasource.tableId)
|
|
} catch (error: any) {
|
|
this.store.update(state => ({
|
|
...state,
|
|
error,
|
|
}))
|
|
return null
|
|
}
|
|
}
|
|
|
|
async getData() {
|
|
const { datasource } = this.options
|
|
if (!datasource?.rowId || !datasource?.rowTableId) {
|
|
return { rows: [] }
|
|
}
|
|
try {
|
|
const res = await this.API.fetchRelationshipData(
|
|
datasource.rowTableId,
|
|
datasource.rowId,
|
|
datasource.fieldName
|
|
)
|
|
return { rows: res }
|
|
} catch (error) {
|
|
return { rows: [] }
|
|
}
|
|
}
|
|
}
|