Return data when schema is defined
This commit is contained in:
parent
a7f3836eb9
commit
d93c99b947
|
@ -0,0 +1,8 @@
|
|||
export const CONSTANT_INTERNAL_ROW_COLS = [
|
||||
"_id",
|
||||
"_rev",
|
||||
"type",
|
||||
"createdAt",
|
||||
"updatedAt",
|
||||
"tableId",
|
||||
] as const
|
|
@ -2,3 +2,4 @@ export * from "./connections"
|
|||
export * from "./DatabaseImpl"
|
||||
export * from "./utils"
|
||||
export { init, getPouch, getPouchDB, closePouchDB } from "./pouchDB"
|
||||
export * from "./constants"
|
||||
|
|
|
@ -5,7 +5,7 @@ tk.freeze(timestamp)
|
|||
import { outputProcessing } from "../../../utilities/rowProcessor"
|
||||
import * as setup from "./utilities"
|
||||
const { basicRow } = setup.structures
|
||||
import { context, tenancy } from "@budibase/backend-core"
|
||||
import { context, db, tenancy } from "@budibase/backend-core"
|
||||
import { quotas } from "@budibase/pro"
|
||||
import {
|
||||
QuotaUsageType,
|
||||
|
@ -969,7 +969,7 @@ describe("/rows", () => {
|
|||
}
|
||||
)
|
||||
|
||||
it("when schema is defined, no other columns are returned", async () => {
|
||||
it("when schema is defined, defined columns and row attributes are returned", async () => {
|
||||
const table = await config.createTable(userTable())
|
||||
const rows = []
|
||||
for (let i = 0; i < 10; i++) {
|
||||
|
@ -987,9 +987,25 @@ describe("/rows", () => {
|
|||
})
|
||||
const response = await config.api.viewV2.search(createViewResponse.id)
|
||||
|
||||
const anyRowAttributes: {
|
||||
[K in (typeof db.CONSTANT_INTERNAL_ROW_COLS)[number]]: any
|
||||
} = {
|
||||
tableId: expect.anything(),
|
||||
type: expect.anything(),
|
||||
_id: expect.anything(),
|
||||
_rev: expect.anything(),
|
||||
createdAt: expect.anything(),
|
||||
updatedAt: expect.anything(),
|
||||
}
|
||||
|
||||
expect(response.body.rows).toHaveLength(10)
|
||||
expect(response.body.rows).toEqual(
|
||||
expect.arrayContaining(rows.map(r => ({ name: r.name })))
|
||||
expect.arrayContaining(
|
||||
rows.map(r => ({
|
||||
...anyRowAttributes,
|
||||
name: r.name,
|
||||
}))
|
||||
)
|
||||
)
|
||||
})
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@ import { isExternalTable } from "../../../integrations/utils"
|
|||
import * as internal from "./search/internal"
|
||||
import * as external from "./search/external"
|
||||
import { Format } from "../../../api/controllers/view/exporters"
|
||||
import _ from "lodash"
|
||||
|
||||
export interface SearchParams {
|
||||
tableId: string
|
||||
|
@ -37,12 +36,7 @@ export async function search(options: SearchParams): Promise<{
|
|||
hasNextPage?: boolean
|
||||
bookmark?: number | null
|
||||
}> {
|
||||
const result = await pickApi(options.tableId).search(options)
|
||||
|
||||
if (options.fields) {
|
||||
result.rows = result.rows.map((r: any) => _.pick(r, options.fields!))
|
||||
}
|
||||
return result
|
||||
return pickApi(options.tableId).search(options)
|
||||
}
|
||||
|
||||
export interface ExportRowsParams {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import {
|
||||
context,
|
||||
db,
|
||||
SearchParams as InternalSearchParams,
|
||||
} from "@budibase/backend-core"
|
||||
import env from "../../../../environment"
|
||||
|
@ -28,6 +29,7 @@ import {
|
|||
} from "../../../../api/controllers/view/utils"
|
||||
import sdk from "../../../../sdk"
|
||||
import { ExportRowsParams, ExportRowsResult, SearchParams } from "../search"
|
||||
import pick from "lodash/pick"
|
||||
|
||||
export async function search(options: SearchParams) {
|
||||
const { tableId } = options
|
||||
|
@ -72,6 +74,12 @@ export async function search(options: SearchParams) {
|
|||
response.rows = await getGlobalUsersFromMetadata(response.rows)
|
||||
}
|
||||
table = table || (await sdk.tables.getTable(tableId))
|
||||
|
||||
if (options.fields) {
|
||||
const fields = [...options.fields, ...db.CONSTANT_INTERNAL_ROW_COLS]
|
||||
response.rows = response.rows.map((r: any) => pick(r, fields))
|
||||
}
|
||||
|
||||
response.rows = await outputProcessing(table, response.rows)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue