Fix search
This commit is contained in:
parent
9bf22213b2
commit
ac0ae34808
|
@ -147,12 +147,12 @@ export async function search(ctx: any) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function searchView(ctx: Ctx<void, SearchResponse>) {
|
export async function searchView(ctx: Ctx<void, SearchResponse>) {
|
||||||
const { viewId } = ctx.params
|
const { tableId, viewId } = ctx.params
|
||||||
const view = await sdk.views.get(viewId)
|
|
||||||
|
const view = await sdk.views.get(tableId, viewId)
|
||||||
if (!view) {
|
if (!view) {
|
||||||
ctx.throw(404)
|
ctx.throw(404, `View ${viewId} not found in table ${tableId}`)
|
||||||
}
|
}
|
||||||
const tableId = view.tableId
|
|
||||||
|
|
||||||
ctx.status = 200
|
ctx.status = 200
|
||||||
ctx.body = await quotas.addQuery(
|
ctx.body = await quotas.addQuery(
|
||||||
|
|
|
@ -147,7 +147,7 @@ router
|
||||||
rowController.search
|
rowController.search
|
||||||
)
|
)
|
||||||
.get(
|
.get(
|
||||||
"/api/v2/views/:viewId/search",
|
"/api/v2/views/:tableId/:viewId/search",
|
||||||
authorized(PermissionType.VIEW, PermissionLevel.READ),
|
authorized(PermissionType.VIEW, PermissionLevel.READ),
|
||||||
rowController.searchView
|
rowController.searchView
|
||||||
)
|
)
|
||||||
|
|
|
@ -716,8 +716,10 @@ describe("/rows", () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const createViewResponse = await config.api.viewV2.create()
|
const createViewResponse = await config.api.viewV2.create()
|
||||||
|
const response = await config.api.viewV2.search(
|
||||||
const response = await config.api.viewV2.search(createViewResponse._id!)
|
createViewResponse.tableId,
|
||||||
|
createViewResponse.id
|
||||||
|
)
|
||||||
|
|
||||||
expect(response.body.rows).toHaveLength(10)
|
expect(response.body.rows).toHaveLength(10)
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
|
@ -744,11 +746,17 @@ describe("/rows", () => {
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
const createViewResponse = await config.api.viewV2.create({
|
const createViewResponse = await config.api.viewV2.create(
|
||||||
|
config.table?._id!,
|
||||||
|
{
|
||||||
query: { equal: { age: 40 } },
|
query: { equal: { age: 40 } },
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|
||||||
const response = await config.api.viewV2.search(createViewResponse._id!)
|
const response = await config.api.viewV2.search(
|
||||||
|
createViewResponse.tableId,
|
||||||
|
createViewResponse.id
|
||||||
|
)
|
||||||
|
|
||||||
expect(response.body.rows).toHaveLength(5)
|
expect(response.body.rows).toHaveLength(5)
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
|
@ -831,11 +839,17 @@ describe("/rows", () => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const createViewResponse = await config.api.viewV2.create({
|
const createViewResponse = await config.api.viewV2.create(
|
||||||
|
config.table?._id!,
|
||||||
|
{
|
||||||
sort: sortParams,
|
sort: sortParams,
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|
||||||
const response = await config.api.viewV2.search(createViewResponse._id!)
|
const response = await config.api.viewV2.search(
|
||||||
|
createViewResponse.tableId,
|
||||||
|
createViewResponse.id
|
||||||
|
)
|
||||||
|
|
||||||
expect(response.body.rows).toHaveLength(4)
|
expect(response.body.rows).toHaveLength(4)
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
|
|
|
@ -4,6 +4,17 @@ import { ViewV2 } from "@budibase/types"
|
||||||
import sdk from "../../../sdk"
|
import sdk from "../../../sdk"
|
||||||
import { utils as coreUtils } from "@budibase/backend-core"
|
import { utils as coreUtils } from "@budibase/backend-core"
|
||||||
|
|
||||||
|
export async function get(
|
||||||
|
tableId: string,
|
||||||
|
viewId: string
|
||||||
|
): Promise<ViewV2 | undefined> {
|
||||||
|
const table = await sdk.tables.getTable(tableId)
|
||||||
|
const view = Object.values(table.views!).find(v => isV2(v) && v.id === viewId)
|
||||||
|
|
||||||
|
// @ts-ignore TODO
|
||||||
|
return view
|
||||||
|
}
|
||||||
|
|
||||||
export async function create(
|
export async function create(
|
||||||
tableId: string,
|
tableId: string,
|
||||||
viewRequest: Omit<ViewV2, "id" | "version">
|
viewRequest: Omit<ViewV2, "id" | "version">
|
||||||
|
@ -32,10 +43,11 @@ export async function remove(tableId: string, viewId: string): Promise<void> {
|
||||||
const db = context.getAppDB()
|
const db = context.getAppDB()
|
||||||
|
|
||||||
const table = await sdk.tables.getTable(tableId)
|
const table = await sdk.tables.getTable(tableId)
|
||||||
const view = Object.values(table.views!).find(v => isV2(v) && v.id === viewId)
|
const view = await get(tableId, viewId)
|
||||||
if (!view) {
|
if (!view) {
|
||||||
throw new HTTPError(`View ${viewId} not found in table ${tableId}`, 404)
|
throw new HTTPError(`View ${viewId} not found in table ${tableId}`, 404)
|
||||||
}
|
}
|
||||||
|
|
||||||
delete table.views![view?.name]
|
delete table.views![view?.name]
|
||||||
await db.put(table)
|
await db.put(table)
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,9 +42,13 @@ export class ViewV2API extends TestAPI {
|
||||||
.expect(expectStatus)
|
.expect(expectStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
search = async (viewId: string, { expectStatus } = { expectStatus: 200 }) => {
|
search = async (
|
||||||
|
tableId: string,
|
||||||
|
viewId: string,
|
||||||
|
{ expectStatus } = { expectStatus: 200 }
|
||||||
|
) => {
|
||||||
return this.request
|
return this.request
|
||||||
.get(`/api/v2/views/${viewId}/search`)
|
.get(`/api/v2/views/${tableId}/${viewId}/search`)
|
||||||
.set(this.config.defaultHeaders())
|
.set(this.config.defaultHeaders())
|
||||||
.expect("Content-Type", /json/)
|
.expect("Content-Type", /json/)
|
||||||
.expect(expectStatus)
|
.expect(expectStatus)
|
||||||
|
|
Loading…
Reference in New Issue