Majority of comments.

This commit is contained in:
mike12345567 2025-02-07 11:52:31 +00:00
parent ec3cd23fcf
commit 85b2db1f02
8 changed files with 19 additions and 25 deletions

View File

@ -10,7 +10,7 @@
viewsV2, viewsV2,
} from "@/stores/builder" } from "@/stores/builder"
import ConfirmDialog from "@/components/common/ConfirmDialog.svelte" import ConfirmDialog from "@/components/common/ConfirmDialog.svelte"
import { helpers } from "@budibase/shared-core" import { helpers, utils } from "@budibase/shared-core"
import { SourceType } from "@budibase/types" import { SourceType } from "@budibase/types"
import { goto, params } from "@roxi/routify" import { goto, params } from "@roxi/routify"
import { DB_TYPE_EXTERNAL } from "@/constants/backend" import { DB_TYPE_EXTERNAL } from "@/constants/backend"
@ -45,7 +45,7 @@
} }
export const show = async () => { export const show = async () => {
const usage = await screenStore.usageOfScreens(getSourceID()) const usage = await screenStore.usageInScreens(getSourceID())
affectedScreens = processScreens(usage.screens) affectedScreens = processScreens(usage.screens)
sourceType = usage.sourceType sourceType = usage.sourceType
confirmDeleteDialog.show() confirmDeleteDialog.show()
@ -93,7 +93,6 @@
} }
notifications.success("View deleted") notifications.success("View deleted")
} catch (error) { } catch (error) {
console.error(error)
notifications.error("Error deleting view") notifications.error("Error deleting view")
} }
} }
@ -140,6 +139,8 @@
return await deleteQuery(source as Query) return await deleteQuery(source as Query)
case SourceType.DATASOURCE: case SourceType.DATASOURCE:
return await deleteDatasource(source as Datasource) return await deleteDatasource(source as Datasource)
default:
utils.unreachable(sourceType)
} }
} }

View File

@ -504,8 +504,8 @@ export class ScreenStore extends BudiStore<ScreenState> {
/** /**
* Provides a list of screens that are used by a given source ID (table, view, datasource, query) * Provides a list of screens that are used by a given source ID (table, view, datasource, query)
*/ */
async usageOfScreens(sourceId: string) { async usageInScreens(sourceId: string) {
return API.usageOfScreens(sourceId) return API.usageInScreens(sourceId)
} }
} }

View File

@ -2,14 +2,14 @@ import {
DeleteScreenResponse, DeleteScreenResponse,
SaveScreenRequest, SaveScreenRequest,
SaveScreenResponse, SaveScreenResponse,
UsageOfScreensResponse, UsageInScreensResponse,
} from "@budibase/types" } from "@budibase/types"
import { BaseAPIClient } from "./types" import { BaseAPIClient } from "./types"
export interface ScreenEndpoints { export interface ScreenEndpoints {
saveScreen: (screen: SaveScreenRequest) => Promise<SaveScreenResponse> saveScreen: (screen: SaveScreenRequest) => Promise<SaveScreenResponse>
deleteScreen: (id: string, rev: string) => Promise<DeleteScreenResponse> deleteScreen: (id: string, rev: string) => Promise<DeleteScreenResponse>
usageOfScreens: (sourceId: string) => Promise<UsageOfScreensResponse> usageInScreens: (sourceId: string) => Promise<UsageInScreensResponse>
} }
export const buildScreenEndpoints = (API: BaseAPIClient): ScreenEndpoints => ({ export const buildScreenEndpoints = (API: BaseAPIClient): ScreenEndpoints => ({
@ -35,7 +35,7 @@ export const buildScreenEndpoints = (API: BaseAPIClient): ScreenEndpoints => ({
}) })
}, },
usageOfScreens: async sourceId => { usageInScreens: async sourceId => {
return await API.post({ return await API.post({
url: `/api/screens/usage/${sourceId}`, url: `/api/screens/usage/${sourceId}`,
}) })

View File

@ -17,7 +17,7 @@ import {
ScreenProps, ScreenProps,
ScreenUsage, ScreenUsage,
SourceType, SourceType,
UsageOfScreensResponse, UsageInScreensResponse,
UserCtx, UserCtx,
} from "@budibase/types" } from "@budibase/types"
import { builderSocket } from "../../websockets" import { builderSocket } from "../../websockets"
@ -138,7 +138,7 @@ function findPlugins(component: ScreenProps, foundPlugins: string[]) {
component._children.forEach(child => findPlugins(child, foundPlugins)) component._children.forEach(child => findPlugins(child, foundPlugins))
} }
export async function usage(ctx: UserCtx<void, UsageOfScreensResponse>) { export async function usage(ctx: UserCtx<void, UsageInScreensResponse>) {
const sourceId = ctx.params.sourceId const sourceId = ctx.params.sourceId
const sourceType = sdk.common.getSourceType(sourceId) const sourceType = sdk.common.getSourceType(sourceId)
const allScreens = await sdk.screens.fetch() const allScreens = await sdk.screens.fetch()
@ -152,14 +152,8 @@ export async function usage(ctx: UserCtx<void, UsageOfScreensResponse>) {
}) })
} }
} }
const isInternalTable =
sourceType === SourceType.TABLE &&
sdk.tables.isInternal({ tableId: sourceId })
const isInternalView =
sourceType === SourceType.VIEW && sdk.views.isInternal(sourceId)
ctx.body = { ctx.body = {
sourceType, sourceType,
internal: isInternalTable || isInternalView,
screens: response, screens: response,
} }
} }

View File

@ -6,7 +6,7 @@ import {
Role, Role,
BuiltinPermissionID, BuiltinPermissionID,
SourceType, SourceType,
UsageOfScreensResponse, UsageInScreensResponse,
} from "@budibase/types" } from "@budibase/types"
const { const {
@ -193,7 +193,7 @@ describe("/screens", () => {
await config.api.screen.save(basicScreen()) await config.api.screen.save(basicScreen())
}) })
function confirmScreen(usage: UsageOfScreensResponse, screen: Screen) { function confirmScreen(usage: UsageInScreensResponse, screen: Screen) {
expect(usage.screens.length).toEqual(1) expect(usage.screens.length).toEqual(1)
expect(usage.screens[0].url).toEqual(screen.routing.route) expect(usage.screens[0].url).toEqual(screen.routing.route)
expect(usage.screens[0]._id).toEqual(screen._id!) expect(usage.screens[0]._id).toEqual(screen._id!)

View File

@ -1,4 +1,4 @@
import { Screen, UsageOfScreensResponse } from "@budibase/types" import { Screen, UsageInScreensResponse } from "@budibase/types"
import { Expectations, TestAPI } from "./base" import { Expectations, TestAPI } from "./base"
export class ScreenAPI extends TestAPI { export class ScreenAPI extends TestAPI {
@ -32,8 +32,8 @@ export class ScreenAPI extends TestAPI {
usage = async ( usage = async (
sourceId: string, sourceId: string,
expectations?: Expectations expectations?: Expectations
): Promise<UsageOfScreensResponse> => { ): Promise<UsageInScreensResponse> => {
return this._post<UsageOfScreensResponse>( return this._post<UsageInScreensResponse>(
`/api/screens/usage/${sourceId}`, `/api/screens/usage/${sourceId}`,
{ {
expectations, expectations,

View File

@ -1,8 +1,8 @@
import { Screen } from "@budibase/types" import { Screen, Component } from "@budibase/types"
export function findInSettings(screen: Screen, toFind: string) { export function findInSettings(screen: Screen, toFind: string) {
const foundIn: { setting: string; value: string }[] = [] const foundIn: { setting: string; value: string }[] = []
function recurse(props: Record<string, any>, parentKey = "") { function recurse(props: Component, parentKey = "") {
for (const [key, value] of Object.entries(props)) { for (const [key, value] of Object.entries(props)) {
if (!value) { if (!value) {
continue continue

View File

@ -21,8 +21,7 @@ export interface ScreenUsage {
_id: string _id: string
} }
export interface UsageOfScreensResponse { export interface UsageInScreensResponse {
sourceType: SourceType sourceType: SourceType
internal: boolean
screens: ScreenUsage[] screens: ScreenUsage[]
} }