Merge branch 'master' into bumppro-submodule
This commit is contained in:
commit
2a563ef41b
|
@ -119,6 +119,9 @@ async function removeManyToManyRelationships(
|
|||
endpoint: getEndpoint(tableId, Operation.DELETE),
|
||||
body: { [colName]: null },
|
||||
filters,
|
||||
meta: {
|
||||
table,
|
||||
},
|
||||
})
|
||||
} else {
|
||||
return []
|
||||
|
@ -133,6 +136,9 @@ async function removeOneToManyRelationships(rowId: string, table: Table) {
|
|||
return getDatasourceAndQuery({
|
||||
endpoint: getEndpoint(tableId, Operation.UPDATE),
|
||||
filters,
|
||||
meta: {
|
||||
table,
|
||||
},
|
||||
})
|
||||
} else {
|
||||
return []
|
||||
|
@ -248,6 +254,9 @@ export class ExternalRequest<T extends Operation> {
|
|||
const response = await getDatasourceAndQuery({
|
||||
endpoint: getEndpoint(table._id!, Operation.READ),
|
||||
filters: buildFilters(rowId, {}, table),
|
||||
meta: {
|
||||
table,
|
||||
},
|
||||
})
|
||||
if (Array.isArray(response) && response.length > 0) {
|
||||
return response[0]
|
||||
|
@ -395,6 +404,9 @@ export class ExternalRequest<T extends Operation> {
|
|||
[fieldName]: row[lookupField],
|
||||
},
|
||||
},
|
||||
meta: {
|
||||
table,
|
||||
},
|
||||
})
|
||||
// this is the response from knex if no rows found
|
||||
const rows: Row[] =
|
||||
|
@ -425,6 +437,7 @@ export class ExternalRequest<T extends Operation> {
|
|||
// if we're creating (in a through table) need to wipe the existing ones first
|
||||
const promises = []
|
||||
const related = await this.lookupRelations(mainTableId, row)
|
||||
const table = this.getTable(mainTableId)!
|
||||
for (let relationship of relationships) {
|
||||
const { key, tableId, isUpdate, id, ...rest } = relationship
|
||||
const body: { [key: string]: any } = processObjectSync(rest, row, {})
|
||||
|
@ -470,6 +483,9 @@ export class ExternalRequest<T extends Operation> {
|
|||
// if we're doing many relationships then we're writing, only one response
|
||||
body,
|
||||
filters: buildFilters(id, {}, linkTable),
|
||||
meta: {
|
||||
table,
|
||||
},
|
||||
})
|
||||
)
|
||||
} else {
|
||||
|
|
|
@ -22,6 +22,7 @@ export async function makeTableRequest(
|
|||
operation,
|
||||
},
|
||||
meta: {
|
||||
table,
|
||||
tables,
|
||||
},
|
||||
table,
|
||||
|
|
|
@ -9,6 +9,14 @@ import {
|
|||
} from "@budibase/types"
|
||||
|
||||
const TABLE_NAME = "test"
|
||||
const TABLE: Table = {
|
||||
type: "table",
|
||||
sourceType: TableSourceType.EXTERNAL,
|
||||
sourceId: "SOURCE_ID",
|
||||
schema: {},
|
||||
name: TABLE_NAME,
|
||||
primary: ["id"],
|
||||
}
|
||||
|
||||
function endpoint(table: any, operation: any) {
|
||||
return {
|
||||
|
@ -25,6 +33,10 @@ function generateReadJson({
|
|||
sort,
|
||||
paginate,
|
||||
}: any = {}): QueryJson {
|
||||
const tableObj = { ...TABLE }
|
||||
if (table) {
|
||||
tableObj.name = table
|
||||
}
|
||||
return {
|
||||
endpoint: endpoint(table || TABLE_NAME, "READ"),
|
||||
resource: {
|
||||
|
@ -34,14 +46,7 @@ function generateReadJson({
|
|||
sort: sort || {},
|
||||
paginate: paginate || {},
|
||||
meta: {
|
||||
table: {
|
||||
type: "table",
|
||||
sourceType: TableSourceType.EXTERNAL,
|
||||
sourceId: "SOURCE_ID",
|
||||
schema: {},
|
||||
name: table || TABLE_NAME,
|
||||
primary: ["id"],
|
||||
} as any,
|
||||
table: tableObj,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -49,6 +54,9 @@ function generateReadJson({
|
|||
function generateCreateJson(table = TABLE_NAME, body = {}): QueryJson {
|
||||
return {
|
||||
endpoint: endpoint(table, "CREATE"),
|
||||
meta: {
|
||||
table: TABLE,
|
||||
},
|
||||
body,
|
||||
}
|
||||
}
|
||||
|
@ -58,7 +66,15 @@ function generateUpdateJson({
|
|||
body = {},
|
||||
filters = {},
|
||||
meta = {},
|
||||
}: {
|
||||
table: string
|
||||
body?: any
|
||||
filters?: any
|
||||
meta?: any
|
||||
}): QueryJson {
|
||||
if (!meta.table) {
|
||||
meta.table = table
|
||||
}
|
||||
return {
|
||||
endpoint: endpoint(table, "UPDATE"),
|
||||
filters,
|
||||
|
@ -70,6 +86,9 @@ function generateUpdateJson({
|
|||
function generateDeleteJson(table = TABLE_NAME, filters = {}): QueryJson {
|
||||
return {
|
||||
endpoint: endpoint(table, "DELETE"),
|
||||
meta: {
|
||||
table: TABLE,
|
||||
},
|
||||
filters,
|
||||
}
|
||||
}
|
||||
|
@ -102,6 +121,9 @@ function generateRelationshipJson(config: { schema?: string } = {}): QueryJson {
|
|||
},
|
||||
],
|
||||
extra: { idFilter: {} },
|
||||
meta: {
|
||||
table: TABLE,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,8 @@ import {
|
|||
QueryJson,
|
||||
SourceName,
|
||||
SqlQuery,
|
||||
Table,
|
||||
TableSourceType,
|
||||
} from "@budibase/types"
|
||||
import { join } from "path"
|
||||
import Sql from "../base/sql"
|
||||
|
@ -11,6 +13,16 @@ import { SqlClient } from "../utils"
|
|||
import { generator } from "@budibase/backend-core/tests"
|
||||
import sdk from "../../sdk"
|
||||
|
||||
// this doesn't exist strictly
|
||||
const TABLE: Table = {
|
||||
type: "table",
|
||||
sourceType: TableSourceType.EXTERNAL,
|
||||
sourceId: "SOURCE_ID",
|
||||
schema: {},
|
||||
name: "tableName",
|
||||
primary: ["id"],
|
||||
}
|
||||
|
||||
const AliasTables = sdk.rows.AliasTables
|
||||
|
||||
function multiline(sql: string) {
|
||||
|
@ -222,6 +234,9 @@ describe("Captures of real examples", () => {
|
|||
resource: {
|
||||
fields,
|
||||
},
|
||||
meta: {
|
||||
table: TABLE,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -60,7 +60,10 @@ export class DatasourceAPI extends TestAPI {
|
|||
})
|
||||
}
|
||||
|
||||
query = async (query: QueryJson, expectations?: Expectations) => {
|
||||
query = async (
|
||||
query: Omit<QueryJson, "meta">,
|
||||
expectations?: Expectations
|
||||
) => {
|
||||
return await this._post<any>(`/api/datasources/query`, {
|
||||
body: query,
|
||||
expectations,
|
||||
|
|
|
@ -90,8 +90,8 @@ export interface QueryJson {
|
|||
paginate?: PaginationJson
|
||||
body?: Row | Row[]
|
||||
table?: Table
|
||||
meta?: {
|
||||
table?: Table
|
||||
meta: {
|
||||
table: Table
|
||||
tables?: Record<string, Table>
|
||||
renamed?: RenameColumn
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue