From 7140df6ed34e4cc978aa4edc80ebb41831ae82fa Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 18 Jul 2023 12:06:35 +0200 Subject: [PATCH] Better typing responses --- .../src/api/controllers/view/viewsV2.ts | 23 +++++++++++++------ .../src/api/routes/tests/viewV2.spec.ts | 10 ++++---- .../src/tests/utilities/TestConfiguration.ts | 3 ++- packages/types/src/api/web/app/view.ts | 5 ++++ 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/packages/server/src/api/controllers/view/viewsV2.ts b/packages/server/src/api/controllers/view/viewsV2.ts index 65340682d8..8cb0a14150 100644 --- a/packages/server/src/api/controllers/view/viewsV2.ts +++ b/packages/server/src/api/controllers/view/viewsV2.ts @@ -1,7 +1,13 @@ import sdk from "../../../sdk" -import { Ctx, FetchViewResponse, ViewResponse, ViewV2 } from "@budibase/types" +import { + CreateViewRequest, + Ctx, + FetchViewResponse, + ViewResponse, + ViewV2, +} from "@budibase/types" -export async function fetch(ctx: Ctx<{}, FetchViewResponse>) { +export async function fetch(ctx: Ctx) { const { tableId } = ctx.query if (tableId && typeof tableId !== "string") { @@ -15,7 +21,7 @@ export async function fetch(ctx: Ctx<{}, FetchViewResponse>) { ctx.body = { views } } -export async function find(ctx: Ctx<{}, ViewResponse>) { +export async function find(ctx: Ctx) { const { viewId } = ctx.params const view = await sdk.views.get(viewId) @@ -28,16 +34,19 @@ export async function find(ctx: Ctx<{}, ViewResponse>) { } } -export async function save(ctx: Ctx) { +export async function save(ctx: Ctx) { const view = ctx.request.body + const result = await sdk.views.save(view) ctx.body = { - ...view, - ...result, + data: { + ...view, + ...result, + }, } } -export async function remove(ctx: Ctx<{}, {}>) { +export async function remove(ctx: Ctx) { const { viewId } = ctx.params const doc = await sdk.views.get(viewId) if (!doc) { diff --git a/packages/server/src/api/routes/tests/viewV2.spec.ts b/packages/server/src/api/routes/tests/viewV2.spec.ts index 3ae6445393..b66d28eee6 100644 --- a/packages/server/src/api/routes/tests/viewV2.spec.ts +++ b/packages/server/src/api/routes/tests/viewV2.spec.ts @@ -136,12 +136,14 @@ describe("/v2/views", () => { .expect("Content-Type", /json/) .expect(200) expect(res.status).toBe(200) - expect(res.body._id).toBeDefined() + expect(res.body.data._id).toBeDefined() expect(res.body).toEqual({ - ...newView, - _id: expect.any(String), - _rev: expect.any(String), + data: { + ...newView, + _id: expect.any(String), + _rev: expect.any(String), + }, }) }) }) diff --git a/packages/server/src/tests/utilities/TestConfiguration.ts b/packages/server/src/tests/utilities/TestConfiguration.ts index e4f3cf31d1..a3340f094c 100644 --- a/packages/server/src/tests/utilities/TestConfiguration.ts +++ b/packages/server/src/tests/utilities/TestConfiguration.ts @@ -646,7 +646,8 @@ class TestConfiguration { name: generator.guid(), ...config, } - return this._req(view, null, controllers.view.v2.save) + const result = await this._req(view, null, controllers.view.v2.save) + return result.data }, get: (viewId: string): supertest.Test => { return this.request!.get(`/api/v2/views/${viewId}`) diff --git a/packages/types/src/api/web/app/view.ts b/packages/types/src/api/web/app/view.ts index 524783d090..6ebe8b8a36 100644 --- a/packages/types/src/api/web/app/view.ts +++ b/packages/types/src/api/web/app/view.ts @@ -7,3 +7,8 @@ export interface FetchViewResponse { export interface ViewResponse { data: ViewV2 } + +export type CreateViewRequest = Omit< + ViewV2, + "_id" | "_rev" | "createdAt" | "updatedAt" +>