This commit is contained in:
Adria Navarro 2025-01-07 16:02:34 +01:00
parent dcf52b5dc9
commit ed2e35dea0
11 changed files with 10 additions and 47 deletions

View File

@ -71,7 +71,7 @@ export const deriveStores = (context: StoreContext): DerivedDatasourceStore => {
} = context } = context
const schema = derived(definition, $definition => { const schema = derived(definition, $definition => {
let schema: Record<string, UIFieldSchema> = getDatasourceSchema({ const schema: Record<string, any> | null | undefined = getDatasourceSchema({
API, API,
datasource: get(datasource), datasource: get(datasource),
definition: $definition ?? undefined, definition: $definition ?? undefined,
@ -82,7 +82,7 @@ export const deriveStores = (context: StoreContext): DerivedDatasourceStore => {
// Ensure schema is configured as objects. // Ensure schema is configured as objects.
// Certain datasources like queries use primitives. // Certain datasources like queries use primitives.
Object.keys(schema || {}).forEach(key => { Object.keys(schema).forEach(key => {
if (typeof schema[key] !== "object") { if (typeof schema[key] !== "object") {
schema[key] = { name: key, type: schema[key] } schema[key] = { name: key, type: schema[key] }
} }

View File

@ -1,10 +1,6 @@
import DataFetch from "./DataFetch" import DataFetch from "./DataFetch"
export default class CustomFetch extends DataFetch<any, any> { export default class CustomFetch extends DataFetch<any, any> {
getSchema(_datasource: any, definition: any) {
return definition?.schema
}
// Gets the correct Budibase type for a JS value // Gets the correct Budibase type for a JS value
getType(value: any) { getType(value: any) {
if (value == null) { if (value == null) {

View File

@ -60,7 +60,10 @@ export interface DataFetchParams<
*/ */
export default abstract class DataFetch< export default abstract class DataFetch<
TDatasource extends {}, TDatasource extends {},
TDefinition extends {}, TDefinition extends {
schema?: Record<string, any> | null
primaryDisplay?: string
},
TQuery extends {} = SearchFilters TQuery extends {} = SearchFilters
> { > {
API: APIClient API: APIClient
@ -361,10 +364,9 @@ export default abstract class DataFetch<
* @param definition the datasource definition * @param definition the datasource definition
* @return {object} the schema * @return {object} the schema
*/ */
abstract getSchema( getSchema(_datasource: TDatasource | null, definition: TDefinition | null) {
datasource: TDatasource | null, return definition?.schema
definition: TDefinition | null }
): any
/** /**
* Enriches a datasource schema with nested fields and ensures the structure * Enriches a datasource schema with nested fields and ensures the structure

View File

@ -1,4 +1,4 @@
import { Row, TableSchema } from "@budibase/types" import { Row } from "@budibase/types"
import DataFetch from "./DataFetch" import DataFetch from "./DataFetch"
export interface FieldDatasource { export interface FieldDatasource {
@ -19,13 +19,6 @@ export default class FieldFetch extends DataFetch<
FieldDatasource, FieldDatasource,
FieldDefinition FieldDefinition
> { > {
getSchema(
_datasource: FieldDatasource,
definition: { schema?: TableSchema }
) {
return definition?.schema
}
async getDefinition( async getDefinition(
datasource: FieldDatasource datasource: FieldDatasource
): Promise<FieldDefinition | null> { ): Promise<FieldDefinition | null> {

View File

@ -26,10 +26,6 @@ export default class GroupUserFetch extends DataFetch<
}) })
} }
getSchema(_datasource: any, definition: any) {
return definition?.schema
}
determineFeatureFlags() { determineFeatureFlags() {
return { return {
supportsSearch: true, supportsSearch: true,

View File

@ -1,10 +1,6 @@
import DataFetch from "./DataFetch" import DataFetch from "./DataFetch"
export default class NestedProviderFetch extends DataFetch<any, any> { export default class NestedProviderFetch extends DataFetch<any, any> {
getSchema(_datasource: any, definition: any) {
return definition?.schema
}
async getDefinition(datasource: any) { async getDefinition(datasource: any) {
// Nested providers should already have exposed their own schema // Nested providers should already have exposed their own schema
return { return {

View File

@ -11,10 +11,6 @@ interface QueryDatasource {
} }
export default class QueryFetch extends DataFetch<QueryDatasource, Query> { export default class QueryFetch extends DataFetch<QueryDatasource, Query> {
getSchema(_datasource: any, definition: any) {
return definition?.schema
}
determineFeatureFlags(definition: Query) { determineFeatureFlags(definition: Query) {
const supportsPagination = const supportsPagination =
!!definition?.fields?.pagination?.type && !!definition?.fields?.pagination?.type &&

View File

@ -12,10 +12,6 @@ export default class RelationshipFetch extends DataFetch<
RelationshipDatasource, RelationshipDatasource,
Table Table
> { > {
getSchema(_datasource: any, definition: any) {
return definition?.schema
}
async getDefinition(datasource: RelationshipDatasource) { async getDefinition(datasource: RelationshipDatasource) {
if (!datasource?.tableId) { if (!datasource?.tableId) {
return null return null

View File

@ -26,10 +26,6 @@ export default class TableFetch extends DataFetch<UITable, Table> {
} }
} }
getSchema(_datasource: UITable | null, definition: Table | null) {
return definition?.schema
}
async getData() { async getData() {
const { datasource, limit, sortColumn, sortOrder, sortType, paginate } = const { datasource, limit, sortColumn, sortOrder, sortType, paginate } =
this.options this.options

View File

@ -48,10 +48,6 @@ export default class UserFetch extends DataFetch<
} }
} }
getSchema(_datasource: any, definition: Table | null) {
return definition?.schema
}
async getData() { async getData() {
const { limit, paginate } = this.options const { limit, paginate } = this.options
const { cursor, query } = get(this.store) const { cursor, query } = get(this.store)

View File

@ -12,10 +12,6 @@ export default class ViewV2Fetch extends DataFetch<UIView, ViewV2> {
} }
} }
getSchema(_datasource: UIView, definition: ViewV2) {
return definition?.schema
}
async getDefinition(datasource: UIView | null): Promise<ViewV2 | null> { async getDefinition(datasource: UIView | null): Promise<ViewV2 | null> {
if (!datasource?.id) { if (!datasource?.id) {
return null return null