Final renames

This commit is contained in:
Adria Navarro 2025-05-16 16:34:21 +02:00
parent b69462680d
commit 6ba7317c7a
12 changed files with 59 additions and 55 deletions

View File

@ -214,9 +214,9 @@ export const getOAuth2ConfigParams = (
/**
* Gets parameters for retrieving project apps, this is a utility function for the getDocParams function.
*/
export const getProjectAppParams = (
projectAppId?: string | null,
export const getWorkspaceAppParams = (
workspaceAppId?: string | null,
otherProps: Partial<DatabaseQueryOpts> = {}
) => {
return getDocParams(DocumentType.WORKSPACE_APP, projectAppId, otherProps)
return getDocParams(DocumentType.WORKSPACE_APP, workspaceAppId, otherProps)
}

View File

@ -184,7 +184,7 @@ async function addSampleDataDocs() {
async function addSampleDataScreen() {
const db = context.getAppDB()
let projectAppId: string | undefined
let workspaceAppId: string | undefined
if (await features.isEnabled(FeatureFlag.WORKSPACE_APPS)) {
const appMetadata = await sdk.applications.metadata.get()
@ -193,10 +193,10 @@ async function addSampleDataScreen() {
urlPrefix: "/",
icon: "Monitoring",
})
projectAppId = workspaceApp._id!
workspaceAppId = workspaceApp._id!
}
let screen = await createSampleDataTableScreen(projectAppId)
let screen = await createSampleDataTableScreen(workspaceAppId)
screen._id = generateScreenID()
await db.put(screen)
}
@ -285,7 +285,7 @@ export async function fetchAppPackage(
let workspaceApps: FetchAppPackageResponse["workspaceApps"] = []
if (await features.flags.isEnabled(FeatureFlag.WORKSPACE_APPS)) {
workspaceApps = await extractScreensByProjectApp(screens)
workspaceApps = await extractScreensByWorkspaceApp(screens)
screens = []
}
@ -305,20 +305,20 @@ export async function fetchAppPackage(
}
}
async function extractScreensByProjectApp(
async function extractScreensByWorkspaceApp(
screens: Screen[]
): Promise<FetchAppPackageResponse["workspaceApps"]> {
const result: FetchAppPackageResponse["workspaceApps"] = []
const workspaceApps = await sdk.workspaceApps.fetch()
const screensByProjectApp = groupBy(s => s.projectAppId, screens)
for (const projectAppId of Object.keys(screensByProjectApp)) {
const workspaceApp = workspaceApps.find(p => p._id === projectAppId)
const screensByWorkspaceApp = groupBy(s => s.workspaceAppId, screens)
for (const workspaceAppId of Object.keys(screensByWorkspaceApp)) {
const workspaceApp = workspaceApps.find(p => p._id === workspaceAppId)
result.push({
...workspaceApp!,
screens: screensByProjectApp[projectAppId],
screens: screensByWorkspaceApp[workspaceAppId],
})
}

View File

@ -1,15 +1,17 @@
import {
Ctx,
InsertProjectAppRequest,
InsertProjectAppResponse,
InsertWorkspaceAppRequest,
InsertWorkspaceAppResponse,
WorkspaceApp,
ProjectAppResponse,
UpdateProjectAppRequest,
UpdateProjectAppResponse,
WorkspaceAppResponse,
UpdateWorkspaceAppRequest,
UpdateWorkspaceAppResponse,
} from "@budibase/types"
import sdk from "../../sdk"
function toProjectAppResponse(workspaceApp: WorkspaceApp): ProjectAppResponse {
function toWorkspaceAppResponse(
workspaceApp: WorkspaceApp
): WorkspaceAppResponse {
return {
_id: workspaceApp._id!,
_rev: workspaceApp._rev!,
@ -21,25 +23,25 @@ function toProjectAppResponse(workspaceApp: WorkspaceApp): ProjectAppResponse {
}
export async function create(
ctx: Ctx<InsertProjectAppRequest, InsertProjectAppResponse>
ctx: Ctx<InsertWorkspaceAppRequest, InsertWorkspaceAppResponse>
) {
const { body } = ctx.request
const newProjectApp = {
const newWorkspaceApp = {
name: body.name,
urlPrefix: body.urlPrefix,
icon: body.icon,
iconColor: body.iconColor,
}
const workspaceApp = await sdk.workspaceApps.create(newProjectApp)
const workspaceApp = await sdk.workspaceApps.create(newWorkspaceApp)
ctx.status = 201
ctx.body = {
workspaceApp: toProjectAppResponse(workspaceApp),
workspaceApp: toWorkspaceAppResponse(workspaceApp),
}
}
export async function edit(
ctx: Ctx<UpdateProjectAppRequest, UpdateProjectAppResponse>
ctx: Ctx<UpdateWorkspaceAppRequest, UpdateWorkspaceAppResponse>
) {
const { body } = ctx.request
@ -58,7 +60,7 @@ export async function edit(
const workspaceApp = await sdk.workspaceApps.update(toUpdate)
ctx.body = {
workspaceApp: toProjectAppResponse(workspaceApp),
workspaceApp: toWorkspaceAppResponse(workspaceApp),
}
}

View File

@ -23,7 +23,7 @@ const updateSchema = Joi.object({
...baseSchema,
})
function projectAppValidator(
function workspaceAppValidator(
schema: typeof insertSchema | typeof updateSchema
) {
return middleware.joiValidator.body(schema, { allowUnknown: false })
@ -34,13 +34,13 @@ const router: Router = new Router()
router.post(
"/api/workspaceApp",
authorized(PermissionType.BUILDER),
projectAppValidator(insertSchema),
workspaceAppValidator(insertSchema),
controller.create
)
router.put(
"/api/workspaceApp/:id",
authorized(PermissionType.BUILDER),
projectAppValidator(updateSchema),
workspaceAppValidator(updateSchema),
controller.edit
)
router.delete(

View File

@ -6,24 +6,26 @@ const migration = async () => {
const screens = await sdk.screens.fetch()
const application = await sdk.applications.metadata.get()
const allProjectApps = await sdk.workspaceApps.fetch()
let projectAppId = allProjectApps.find(p => p.name === application.name)?._id
if (!projectAppId) {
const allWorkspaceApps = await sdk.workspaceApps.fetch()
let workspaceAppId = allWorkspaceApps.find(
p => p.name === application.name
)?._id
if (!workspaceAppId) {
const workspaceApp = await sdk.workspaceApps.create({
name: application.name,
urlPrefix: "/",
icon: "Monitoring",
})
projectAppId = workspaceApp._id
workspaceAppId = workspaceApp._id
}
const db = context.getAppDB()
await db.bulkDocs(
screens
.filter(s => !s.projectAppId)
.filter(s => !s.workspaceAppId)
.map<Screen>(s => ({
...s,
projectAppId,
workspaceAppId,
}))
)
}

View File

@ -3,14 +3,14 @@ import { Screen } from "@budibase/types"
export const SAMPLE_DATA_SCREEN_NAME = "sample-data-inventory-screen"
export function createSampleDataTableScreen(
projectAppId: string | undefined
workspaceAppId: string | undefined
): Screen {
return {
showNavigation: true,
width: "Large",
routing: { route: "/inventory", roleId: "BASIC", homeScreen: false },
name: SAMPLE_DATA_SCREEN_NAME,
projectAppId,
workspaceAppId,
props: {
_id: "c38f2b9f250fb4c33965ce47e12c02a80",
_component: "@budibase/standard-components/container",

View File

@ -7,9 +7,9 @@ import {
} from "@budibase/types"
async function guardName(name: string, id?: string) {
const existingProjectApps = await fetch()
const existingWorkspaceApps = await fetch()
if (existingProjectApps.find(p => p.name === name && p._id !== id)) {
if (existingWorkspaceApps.find(p => p.name === name && p._id !== id)) {
throw new HTTPError(`App with name '${name}' is already taken.`, 400)
}
}
@ -17,7 +17,7 @@ async function guardName(name: string, id?: string) {
export async function fetch(): Promise<WorkspaceApp[]> {
const db = context.getAppDB()
const docs = await db.allDocs<WorkspaceApp>(
docIds.getProjectAppParams(null, { include_docs: true })
docIds.getWorkspaceAppParams(null, { include_docs: true })
)
const result = docs.rows.map(r => ({
...r.doc!,
@ -65,16 +65,16 @@ export async function update(
}
export async function remove(
projectAppId: string,
workspaceAppId: string,
_rev: string
): Promise<void> {
const db = context.getAppDB()
try {
await db.remove(projectAppId, _rev)
await db.remove(workspaceAppId, _rev)
} catch (e: any) {
if (e.status === 404) {
throw new HTTPError(
`Project app with id '${projectAppId}' not found.`,
`Project app with id '${workspaceAppId}' not found.`,
404
)
}

View File

@ -587,7 +587,7 @@ function createHomeScreen(
roleId: config.roleId,
},
name: "home-screen",
projectAppId: "projectAppId",
workspaceAppId: "workspaceAppId",
}
}

View File

@ -65,7 +65,7 @@ export function createTableScreen(
homeScreen: false,
},
name: "screen-id",
projectAppId: "projectAppId",
workspaceAppId: "workspaceAppId",
}
}
@ -117,7 +117,7 @@ export function createViewScreen(view: ViewV2): Screen {
homeScreen: false,
},
name: "view-id",
projectAppId: "projectAppId",
workspaceAppId: "workspaceAppId",
}
}
@ -173,6 +173,6 @@ export function createQueryScreen(datasourceId: string, query: Query): Screen {
homeScreen: false,
},
name: "screen-id",
projectAppId: "projectAppId",
workspaceAppId: "workspaceAppId",
}
}

View File

@ -35,7 +35,7 @@ export interface FetchAppDefinitionResponse {
libraries: string[]
}
interface ProjectAppResponse extends WorkspaceApp {
interface WorkspaceAppResponse extends WorkspaceApp {
screens: Screen[]
}
@ -43,7 +43,7 @@ export interface FetchAppPackageResponse {
application: App
licenseType: PlanType
screens: Screen[]
workspaceApps: ProjectAppResponse[]
workspaceApps: WorkspaceAppResponse[]
layouts: Layout[]
clientLibPath: string
hasLock: boolean

View File

@ -1,4 +1,4 @@
export interface ProjectAppResponse {
export interface WorkspaceAppResponse {
_id: string
_rev: string
name: string
@ -7,18 +7,18 @@ export interface ProjectAppResponse {
iconColor?: string
}
export interface InsertProjectAppRequest {
export interface InsertWorkspaceAppRequest {
name: string
urlPrefix: string
icon: string
iconColor: string
}
export interface InsertProjectAppResponse {
workspaceApp: ProjectAppResponse
export interface InsertWorkspaceAppResponse {
workspaceApp: WorkspaceAppResponse
}
export interface UpdateProjectAppRequest {
export interface UpdateWorkspaceAppRequest {
_id: string
_rev: string
name: string
@ -27,6 +27,6 @@ export interface UpdateProjectAppRequest {
iconColor: string
}
export interface UpdateProjectAppResponse {
workspaceApp: ProjectAppResponse
export interface UpdateWorkspaceAppResponse {
workspaceApp: WorkspaceAppResponse
}

View File

@ -29,7 +29,7 @@ export interface Screen extends Document {
pluginAdded?: boolean
onLoad?: EventHandler[]
variant?: ScreenVariant
projectAppId?: string
workspaceAppId?: string
}
export interface ScreenRoutesViewOutput extends Document {