@budibase/worker 3.18.5 → 3.18.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/worker",
3
3
  "email": "hi@budibase.com",
4
- "version": "3.18.5",
4
+ "version": "3.18.7",
5
5
  "description": "Budibase background service",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -109,5 +109,5 @@
109
109
  }
110
110
  }
111
111
  },
112
- "gitHead": "ed229ab880f5eeb626d86fd1131e2e6e88f98f6b"
112
+ "gitHead": "77dd0b9317d77597d35551f8460c0ef3f16cd400"
113
113
  }
@@ -648,10 +648,13 @@ export async function configChecklist(ctx: Ctx<void, ConfigChecklistResponse>) {
648
648
  cache.CacheKey.CHECKLIST,
649
649
  env.CHECKLIST_CACHE_TTL,
650
650
  async (): Promise<ConfigChecklistResponse> => {
651
- let apps = []
651
+ let workspaces = []
652
652
  if (!env.MULTI_TENANCY || tenantId) {
653
653
  // Apps exist
654
- apps = await dbCore.getAllApps({ idsOnly: true, efficient: true })
654
+ workspaces = await dbCore.getAllWorkspaces({
655
+ idsOnly: true,
656
+ efficient: true,
657
+ })
655
658
  }
656
659
 
657
660
  // They have set up SMTP
@@ -673,7 +676,7 @@ export async function configChecklist(ctx: Ctx<void, ConfigChecklistResponse>) {
673
676
 
674
677
  return {
675
678
  apps: {
676
- checked: apps.length > 0,
679
+ checked: workspaces.length > 0,
677
680
  label: "Create your first app",
678
681
  link: "/builder/portal/workspaces",
679
682
  },
@@ -17,22 +17,22 @@ import sdk from "../../../sdk"
17
17
  export async function fetch(ctx: Ctx<void, FetchGlobalRolesResponse>) {
18
18
  const tenantId = ctx.user!.tenantId
19
19
  await context.doInTenant(tenantId, async () => {
20
- // always use the dev apps as they'll be most up to date (true)
21
- const apps = await dbCore.getAllApps({ all: true })
20
+ // always use the dev workspaces as they'll be most up to date (true)
21
+ const workspaces = await dbCore.getAllWorkspaces({ all: true })
22
22
  const promises = []
23
- for (let app of apps) {
24
- // use dev app IDs
25
- promises.push(roles.getAllRoles(app.appId))
23
+ for (let workspace of workspaces) {
24
+ // use dev workspace IDs
25
+ promises.push(roles.getAllRoles(workspace.appId))
26
26
  }
27
27
  const roleList = await Promise.all(promises)
28
28
  const response: any = {}
29
- for (let app of apps) {
30
- const deployedAppId = dbCore.getProdAppID(app.appId)
29
+ for (let workspace of workspaces) {
30
+ const deployedAppId = dbCore.getProdWorkspaceID(workspace.appId)
31
31
  response[deployedAppId] = {
32
32
  roles: roleList.shift(),
33
- name: app.name,
34
- version: app.version,
35
- url: app.url,
33
+ name: workspace.name,
34
+ version: workspace.version,
35
+ url: workspace.url,
36
36
  }
37
37
  }
38
38
  ctx.body = response
@@ -41,16 +41,19 @@ export async function fetch(ctx: Ctx<void, FetchGlobalRolesResponse>) {
41
41
 
42
42
  export async function find(ctx: Ctx<void, FindGlobalRoleResponse>) {
43
43
  const appId = ctx.params.appId
44
- await context.doInAppContext(dbCore.getDevAppID(appId), async () => {
45
- const db = context.getAppDB()
46
- const app = await db.get<Workspace>(dbCore.DocumentType.APP_METADATA)
47
- ctx.body = {
48
- roles: await roles.getAllRoles(),
49
- name: app.name,
50
- version: app.version,
51
- url: app.url,
44
+ await context.doInWorkspaceContext(
45
+ dbCore.getDevWorkspaceID(appId),
46
+ async () => {
47
+ const db = context.getWorkspaceDB()
48
+ const app = await db.get<Workspace>(dbCore.DocumentType.APP_METADATA)
49
+ ctx.body = {
50
+ roles: await roles.getAllRoles(),
51
+ name: app.name,
52
+ version: app.version,
53
+ url: app.url,
54
+ }
52
55
  }
53
- })
56
+ )
54
57
  }
55
58
 
56
59
  export async function removeAppRole(ctx: Ctx<void, RemoveAppRoleResponse>) {
@@ -59,7 +62,7 @@ export async function removeAppRole(ctx: Ctx<void, RemoveAppRoleResponse>) {
59
62
  const users = await sdk.users.db.allUsers()
60
63
  const bulk = []
61
64
  const cacheInvalidations = []
62
- const prodAppId = dbCore.getProdAppID(appId)
65
+ const prodAppId = dbCore.getProdWorkspaceID(appId)
63
66
  for (let user of users) {
64
67
  let updated = false
65
68
  if (user.roles[prodAppId]) {
@@ -1,13 +1,11 @@
1
- import * as userSdk from "../../../sdk/users"
2
1
  import {
2
+ auth as authCore,
3
+ db as dbCore,
4
+ encryption,
3
5
  features,
4
6
  tenancy,
5
- db as dbCore,
6
7
  utils,
7
- encryption,
8
- auth as authCore,
9
8
  } from "@budibase/backend-core"
10
- import env from "../../../environment"
11
9
  import { ai, groups } from "@budibase/pro"
12
10
  import {
13
11
  DevInfo,
@@ -20,6 +18,8 @@ import {
20
18
  User,
21
19
  UserCtx,
22
20
  } from "@budibase/types"
21
+ import env from "../../../environment"
22
+ import * as userSdk from "../../../sdk/users"
23
23
 
24
24
  const { newid } = utils
25
25
 
@@ -139,8 +139,8 @@ export const syncAppFavourites = async (processedAppIds: string[]) => {
139
139
  const tenantId = tenancy.getTenantId()
140
140
  const appPrefix =
141
141
  tenantId === tenancy.DEFAULT_TENANT_ID
142
- ? dbCore.APP_DEV_PREFIX
143
- : `${dbCore.APP_DEV_PREFIX}${tenantId}_`
142
+ ? dbCore.WORKSPACE_DEV_PREFIX
143
+ : `${dbCore.WORKSPACE_DEV_PREFIX}${tenantId}_`
144
144
 
145
145
  const apps = await fetchAppsByIds(processedAppIds, appPrefix)
146
146
  return apps?.reduce((acc: string[], app) => {
@@ -156,7 +156,7 @@ export const fetchAppsByIds = async (
156
156
  processedAppIds: string[],
157
157
  appPrefix: string
158
158
  ) => {
159
- return await dbCore.getAppsByIDs(
159
+ return await dbCore.getWorkspacesByIDs(
160
160
  processedAppIds.map(appId => {
161
161
  return `${appPrefix}${appId}`
162
162
  })
@@ -1,5 +1,5 @@
1
- import { mocks, structures } from "@budibase/backend-core/tests"
2
1
  import { context, events } from "@budibase/backend-core"
2
+ import { mocks, structures } from "@budibase/backend-core/tests"
3
3
  import { Event, IdentityType } from "@budibase/types"
4
4
  import { TestConfiguration } from "../../../../tests"
5
5
 
@@ -36,7 +36,7 @@ describe("/api/global/auditlogs (%s)", () => {
36
36
  for (let i = 0; i < USER_AUDIT_LOG_COUNT; i++) {
37
37
  await events.user.created(structures.users.user())
38
38
  }
39
- await context.doInAppContext(APP_ID, async () => {
39
+ await context.doInWorkspaceContext(APP_ID, async () => {
40
40
  await events.app.created(structures.apps.app(APP_ID))
41
41
  })
42
42
  // fetch the user created events
@@ -16,19 +16,19 @@ jest.mock("@budibase/backend-core", () => {
16
16
  },
17
17
  context: {
18
18
  ...core.context,
19
- getAppDB: jest.fn(),
19
+ getWorkspaceDB: jest.fn(),
20
20
  },
21
21
  }
22
22
  })
23
23
 
24
- let appId: string
25
- let appDb: Database
24
+ let workspaceId: string
25
+ let workspaceDb: Database
26
26
  const ROLE_NAME = "newRole"
27
27
 
28
28
  async function addAppMetadata() {
29
- await appDb.put({
29
+ await workspaceDb.put({
30
30
  _id: "app_metadata",
31
- appId: appId,
31
+ appId: workspaceId,
32
32
  name: "New App",
33
33
  version: "version",
34
34
  url: "url",
@@ -38,8 +38,8 @@ async function addAppMetadata() {
38
38
  async function updateAppMetadata(
39
39
  update: Partial<WithoutDocMetadata<Workspace>>
40
40
  ) {
41
- const app = await appDb.get("app_metadata")
42
- await appDb.put({
41
+ const app = await workspaceDb.get("app_metadata")
42
+ await workspaceDb.put({
43
43
  ...app,
44
44
  ...update,
45
45
  })
@@ -60,13 +60,13 @@ describe("/api/global/roles", () => {
60
60
  })
61
61
 
62
62
  beforeEach(async () => {
63
- appId = db.generateAppID(config.tenantId)
64
- appDb = db.getDB(appId)
65
- const mockAppDB = context.getAppDB as jest.Mock
66
- mockAppDB.mockReturnValue(appDb)
63
+ workspaceId = db.generateWorkspaceID(config.tenantId)
64
+ workspaceDb = db.getDB(workspaceId)
65
+ const mockWorkspaceDB = context.getWorkspaceDB as jest.Mock
66
+ mockWorkspaceDB.mockReturnValue(workspaceDb)
67
67
 
68
68
  await addAppMetadata()
69
- await appDb.put(role)
69
+ await workspaceDb.put(role)
70
70
  })
71
71
 
72
72
  afterAll(async () => {
@@ -81,8 +81,10 @@ describe("/api/global/roles", () => {
81
81
  it("retrieves roles", async () => {
82
82
  const res = await config.api.roles.get()
83
83
  expect(res.body).toBeDefined()
84
- expect(res.body[appId].roles.length).toEqual(5)
85
- expect(res.body[appId].roles.map((r: any) => r._id)).toContain(ROLE_NAME)
84
+ expect(res.body[workspaceId].roles.length).toEqual(5)
85
+ expect(res.body[workspaceId].roles.map((r: any) => r._id)).toContain(
86
+ ROLE_NAME
87
+ )
86
88
  })
87
89
 
88
90
  it.each(["3.0.0", "3.0.1", "3.1.0", "3.0.0+2146.b125a7c"])(
@@ -91,7 +93,7 @@ describe("/api/global/roles", () => {
91
93
  await updateAppMetadata({ creationVersion })
92
94
  const res = await config.api.roles.get()
93
95
  expect(res.body).toBeDefined()
94
- expect(res.body[appId].roles.map((r: any) => r._id)).toEqual([
96
+ expect(res.body[workspaceId].roles.map((r: any) => r._id)).toEqual([
95
97
  ROLE_NAME,
96
98
  roles.BUILTIN_ROLE_IDS.ADMIN,
97
99
  roles.BUILTIN_ROLE_IDS.BASIC,
@@ -106,7 +108,7 @@ describe("/api/global/roles", () => {
106
108
  await updateAppMetadata({ creationVersion })
107
109
  const res = await config.api.roles.get()
108
110
  expect(res.body).toBeDefined()
109
- expect(res.body[appId].roles.map((r: any) => r._id)).toEqual([
111
+ expect(res.body[workspaceId].roles.map((r: any) => r._id)).toEqual([
110
112
  ROLE_NAME,
111
113
  roles.BUILTIN_ROLE_IDS.ADMIN,
112
114
  roles.BUILTIN_ROLE_IDS.POWER,
@@ -122,7 +124,7 @@ describe("/api/global/roles", () => {
122
124
  await updateAppMetadata({ creationVersion })
123
125
  const res = await config.api.roles.get()
124
126
 
125
- expect(res.body[appId].roles.map((r: any) => r._id)).toEqual([
127
+ expect(res.body[workspaceId].roles.map((r: any) => r._id)).toEqual([
126
128
  ROLE_NAME,
127
129
  roles.BUILTIN_ROLE_IDS.ADMIN,
128
130
  roles.BUILTIN_ROLE_IDS.POWER,
@@ -135,7 +137,7 @@ describe("/api/global/roles", () => {
135
137
 
136
138
  describe("GET api/global/roles/:appId", () => {
137
139
  it("finds a role by appId", async () => {
138
- const res = await config.api.roles.find(appId)
140
+ const res = await config.api.roles.find(workspaceId)
139
141
  expect(res.body).toBeDefined()
140
142
  expect(res.body.name).toEqual("New App")
141
143
  })
@@ -160,9 +162,9 @@ describe("/api/global/roles", () => {
160
162
  app_test: "role1",
161
163
  }
162
164
  const userResponse = await config.createUser(user)
163
- const res = await config.api.roles.remove(appId)
165
+ const res = await config.api.roles.remove(workspaceId)
164
166
  const updatedUser = await config.api.users.getUser(userResponse._id!)
165
- expect(updatedUser.body.roles).not.toHaveProperty(appId)
167
+ expect(updatedUser.body.roles).not.toHaveProperty(workspaceId)
166
168
  expect(res.body.message).toEqual("App role removed from all users")
167
169
  })
168
170
 
@@ -170,7 +172,7 @@ describe("/api/global/roles", () => {
170
172
  const builderUser = await createBuilderUser()
171
173
 
172
174
  const res = await config.withUser(builderUser, () =>
173
- config.api.roles.remove(appId, { status: 403 })
175
+ config.api.roles.remove(workspaceId, { status: 403 })
174
176
  )
175
177
  expect(res.body.message).toBe("Admin user only endpoint.")
176
178
  })
@@ -1,6 +1,5 @@
1
1
  import { db as dbCore, platform, tenancy } from "@budibase/backend-core"
2
2
  import { quotas } from "@budibase/pro"
3
- import { Workspace } from "@budibase/types"
4
3
 
5
4
  export async function deleteTenant(tenantId: string) {
6
5
  await quotas.bustCache()
@@ -21,9 +20,11 @@ async function removeGlobalDB(tenantId: string) {
21
20
 
22
21
  async function removeTenantApps(tenantId: string) {
23
22
  try {
24
- const apps = (await dbCore.getAllApps({ all: true })) as Workspace[]
25
- const destroyPromises = apps.map(app => {
26
- const db = dbCore.getDB(app.appId)
23
+ const workspaces = await dbCore.getAllWorkspaces({
24
+ all: true,
25
+ })
26
+ const destroyPromises = workspaces.map(workspace => {
27
+ const db = dbCore.getDB(workspace.appId)
27
28
  return db.destroy()
28
29
  })
29
30
  await Promise.allSettled(destroyPromises)
@@ -1,6 +1,6 @@
1
- import { generator } from "@budibase/backend-core/tests"
2
1
  import { db } from "@budibase/backend-core"
3
- import { UserGroup as UserGroupType, UserGroupRoles } from "@budibase/types"
2
+ import { generator } from "@budibase/backend-core/tests"
3
+ import { UserGroupRoles, UserGroup as UserGroupType } from "@budibase/types"
4
4
 
5
5
  export function UserGroup(): UserGroupType {
6
6
  const appsCount = generator.integer({ min: 0, max: 3 })
@@ -8,7 +8,11 @@ export function UserGroup(): UserGroupType {
8
8
  (p: UserGroupRoles) => {
9
9
  return {
10
10
  ...p,
11
- [db.generateAppID()]: generator.pickone(["ADMIN", "POWER", "BASIC"]),
11
+ [db.generateWorkspaceID()]: generator.pickone([
12
+ "ADMIN",
13
+ "POWER",
14
+ "BASIC",
15
+ ]),
12
16
  }
13
17
  },
14
18
  {}