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,
} from "@/stores/builder"
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 { goto, params } from "@roxi/routify"
import { DB_TYPE_EXTERNAL } from "@/constants/backend"
@ -45,7 +45,7 @@
}
export const show = async () => {
const usage = await screenStore.usageOfScreens(getSourceID())
const usage = await screenStore.usageInScreens(getSourceID())
affectedScreens = processScreens(usage.screens)
sourceType = usage.sourceType
confirmDeleteDialog.show()
@ -93,7 +93,6 @@
}
notifications.success("View deleted")
} catch (error) {
console.error(error)
notifications.error("Error deleting view")
}
}
@ -140,6 +139,8 @@
return await deleteQuery(source as Query)
case SourceType.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)
*/
async usageOfScreens(sourceId: string) {
return API.usageOfScreens(sourceId)
async usageInScreens(sourceId: string) {
return API.usageInScreens(sourceId)
}
}

View File

@ -2,14 +2,14 @@ import {
DeleteScreenResponse,
SaveScreenRequest,
SaveScreenResponse,
UsageOfScreensResponse,
UsageInScreensResponse,
} from "@budibase/types"
import { BaseAPIClient } from "./types"
export interface ScreenEndpoints {
saveScreen: (screen: SaveScreenRequest) => Promise<SaveScreenResponse>
deleteScreen: (id: string, rev: string) => Promise<DeleteScreenResponse>
usageOfScreens: (sourceId: string) => Promise<UsageOfScreensResponse>
usageInScreens: (sourceId: string) => Promise<UsageInScreensResponse>
}
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({
url: `/api/screens/usage/${sourceId}`,
})

View File

@ -17,7 +17,7 @@ import {
ScreenProps,
ScreenUsage,
SourceType,
UsageOfScreensResponse,
UsageInScreensResponse,
UserCtx,
} from "@budibase/types"
import { builderSocket } from "../../websockets"
@ -138,7 +138,7 @@ function findPlugins(component: ScreenProps, foundPlugins: string[]) {
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 sourceType = sdk.common.getSourceType(sourceId)
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 = {
sourceType,
internal: isInternalTable || isInternalView,
screens: response,
}
}

View File

@ -6,7 +6,7 @@ import {
Role,
BuiltinPermissionID,
SourceType,
UsageOfScreensResponse,
UsageInScreensResponse,
} from "@budibase/types"
const {
@ -193,7 +193,7 @@ describe("/screens", () => {
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[0].url).toEqual(screen.routing.route)
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"
export class ScreenAPI extends TestAPI {
@ -32,8 +32,8 @@ export class ScreenAPI extends TestAPI {
usage = async (
sourceId: string,
expectations?: Expectations
): Promise<UsageOfScreensResponse> => {
return this._post<UsageOfScreensResponse>(
): Promise<UsageInScreensResponse> => {
return this._post<UsageInScreensResponse>(
`/api/screens/usage/${sourceId}`,
{
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) {
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)) {
if (!value) {
continue

View File

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