From ff3bbf62171906a775aa8d8e08d2d480011b5040 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 19 Jul 2023 16:33:29 +0200 Subject: [PATCH] Allow ViewV2 types --- packages/server/src/api/controllers/view/views.ts | 5 ++++- .../src/migrations/functions/backfill/app/tables.ts | 4 ++++ packages/server/src/sdk/app/views/index.ts | 9 ++++----- packages/types/src/documents/app/table/table.ts | 4 ++-- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/server/src/api/controllers/view/views.ts b/packages/server/src/api/controllers/view/views.ts index 99c4224c62..257baf5e45 100644 --- a/packages/server/src/api/controllers/view/views.ts +++ b/packages/server/src/api/controllers/view/views.ts @@ -55,7 +55,10 @@ export async function save(ctx: Ctx) { existingTable.views[viewName] = existingTable.views[originalName] } await db.put(table) - await handleViewEvents(existingTable.views[viewName], table.views[viewName]) + await handleViewEvents( + existingTable.views[viewName] as View, + table.views[viewName] + ) ctx.body = table.views[viewName] builderSocket?.emitTableUpdate(ctx, table) diff --git a/packages/server/src/migrations/functions/backfill/app/tables.ts b/packages/server/src/migrations/functions/backfill/app/tables.ts index 51b0de5d29..081b81ede5 100644 --- a/packages/server/src/migrations/functions/backfill/app/tables.ts +++ b/packages/server/src/migrations/functions/backfill/app/tables.ts @@ -10,6 +10,10 @@ export const backfill = async (appDb: Database, timestamp: string | number) => { if (table.views) { for (const view of Object.values(table.views)) { + if (sdk.views.isV2(view)) { + continue + } + await events.view.created(view, timestamp) if (view.calculation) { diff --git a/packages/server/src/sdk/app/views/index.ts b/packages/server/src/sdk/app/views/index.ts index 004fe7e8d9..bf02e03629 100644 --- a/packages/server/src/sdk/app/views/index.ts +++ b/packages/server/src/sdk/app/views/index.ts @@ -1,5 +1,5 @@ import { HTTPError, context } from "@budibase/backend-core" -import { ViewV2 } from "@budibase/types" +import { View, ViewV2 } from "@budibase/types" import sdk from "../../../sdk" import { utils as coreUtils } from "@budibase/backend-core" @@ -9,9 +9,9 @@ export async function get( viewId: string ): Promise { const table = await sdk.tables.getTable(tableId) - const view = Object.values(table.views!).find(v => isV2(v) && v.id === viewId) + const views = Object.values(table.views!) + const view = views.find(v => isV2(v) && v.id === viewId) as ViewV2 | undefined - // @ts-ignore TODO return view } @@ -29,13 +29,12 @@ export async function create( const table = await sdk.tables.getTable(tableId) table.views ??= {} - // @ts-ignore: TODO table.views[view.name] = view await db.put(table) return view } -function isV2(view: object): view is ViewV2 { +export function isV2(view: View | ViewV2): view is ViewV2 { return (view as ViewV2).version === 2 } diff --git a/packages/types/src/documents/app/table/table.ts b/packages/types/src/documents/app/table/table.ts index f4dc790267..76b2c587b2 100644 --- a/packages/types/src/documents/app/table/table.ts +++ b/packages/types/src/documents/app/table/table.ts @@ -1,11 +1,11 @@ import { Document } from "../../document" -import { View } from "../view" +import { View, ViewV2 } from "../view" import { RenameColumn } from "../../../sdk" import { TableSchema } from "./schema" export interface Table extends Document { type?: string - views?: { [key: string]: View } + views?: { [key: string]: View | ViewV2 } name: string primary?: string[] schema: TableSchema