Honor schema on view search
This commit is contained in:
parent
c58b145afd
commit
2186b0407a
|
@ -8,6 +8,7 @@ import { gridSocket } from "../../../websockets"
|
||||||
import sdk from "../../../sdk"
|
import sdk from "../../../sdk"
|
||||||
import * as exporters from "../view/exporters"
|
import * as exporters from "../view/exporters"
|
||||||
import { apiFileReturn } from "../../../utilities/fileSystem"
|
import { apiFileReturn } from "../../../utilities/fileSystem"
|
||||||
|
import _ from "lodash"
|
||||||
|
|
||||||
function pickApi(tableId: any) {
|
function pickApi(tableId: any) {
|
||||||
if (isExternalTable(tableId)) {
|
if (isExternalTable(tableId)) {
|
||||||
|
@ -155,7 +156,7 @@ export async function searchView(ctx: Ctx<void, SearchResponse>) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.status = 200
|
ctx.status = 200
|
||||||
ctx.body = await quotas.addQuery(
|
let { rows } = await quotas.addQuery(
|
||||||
() =>
|
() =>
|
||||||
sdk.rows.search({
|
sdk.rows.search({
|
||||||
tableId: view.tableId,
|
tableId: view.tableId,
|
||||||
|
@ -168,6 +169,13 @@ export async function searchView(ctx: Ctx<void, SearchResponse>) {
|
||||||
datasourceId: view.tableId,
|
datasourceId: view.tableId,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const { columns } = view
|
||||||
|
if (columns) {
|
||||||
|
rows = rows.map(r => _.pick(r, columns))
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.body = { rows }
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function validate(ctx: Ctx) {
|
export async function validate(ctx: Ctx) {
|
||||||
|
|
|
@ -841,5 +841,29 @@ describe("/rows", () => {
|
||||||
rows: expected.map(name => expect.objectContaining({ name })),
|
rows: expected.map(name => expect.objectContaining({ name })),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("when schema is defined, no other columns are returnd", async () => {
|
||||||
|
const table = await config.createTable(userTable())
|
||||||
|
const rows = []
|
||||||
|
for (let i = 0; i < 10; i++) {
|
||||||
|
rows.push(
|
||||||
|
await config.createRow({
|
||||||
|
tableId: table._id,
|
||||||
|
name: generator.name(),
|
||||||
|
age: generator.age(),
|
||||||
|
})
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const createViewResponse = await config.api.viewV2.create({
|
||||||
|
columns: ["name"],
|
||||||
|
})
|
||||||
|
const response = await config.api.viewV2.search(createViewResponse.id)
|
||||||
|
|
||||||
|
expect(response.body.rows).toHaveLength(10)
|
||||||
|
expect(response.body.rows).toEqual(
|
||||||
|
expect.arrayContaining(rows.map(r => ({ name: r.name })))
|
||||||
|
)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue