From 3fa7feeaab27d391648b95cc0bcb3402d865a06c Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Tue, 19 Jul 2022 16:03:02 +0100 Subject: [PATCH] move controller funcs into bb pro --- .../src/api/controllers/global/groups.ts | 104 ------------------ .../routes/global/{groups.js => groups.ts} | 20 ++-- 2 files changed, 10 insertions(+), 114 deletions(-) delete mode 100644 packages/worker/src/api/controllers/global/groups.ts rename packages/worker/src/api/routes/global/{groups.js => groups.ts} (57%) diff --git a/packages/worker/src/api/controllers/global/groups.ts b/packages/worker/src/api/controllers/global/groups.ts deleted file mode 100644 index 62c99e80b0..0000000000 --- a/packages/worker/src/api/controllers/global/groups.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { UserGroup } from "@budibase/types" -const { difference } = require("lodash/fp") - -const { events } = require("@budibase/backend-core") -const { getGlobalDB } = require("@budibase/backend-core/tenancy") -const { groups } = require("@budibase/pro") - -exports.save = async function (ctx: any) { - const db = getGlobalDB() - let group: UserGroup = ctx.request.body - const oldGroup: UserGroup = await db.get(group._id) - - let eventFns = [] - // Config does not exist yet - if (!group._id) { - group._id = groups.generateUserGroupID(ctx.request.body.name) - eventFns.push(() => events.group.created(group)) - } else { - // Get the diff between the old users and new users for - // event processing purposes - let uniqueOld = group.users.filter(g => { - return !oldGroup.users.some(og => { - return g._id == og._id - }) - }) - - let uniqueNew = oldGroup.users.filter(g => { - return !group.users.some(og => { - return g._id == og._id - }) - }) - let newUsers = uniqueOld.concat(uniqueNew) - - eventFns.push(() => events.group.updated(group)) - - if (group.users.length < oldGroup.users.length) { - eventFns.push(() => - events.group.usersDeleted( - newUsers.map(u => u.email), - group - ) - ) - } else if (group.users.length > oldGroup.users.length) { - eventFns.push(() => - events.group.usersAdded( - newUsers.map(u => u.email), - group - ) - ) - } - - if (JSON.stringify(oldGroup.roles) !== JSON.stringify(group.roles)) { - eventFns.push(() => events.group.permissionsEdited(group.roles)) - } - } - - try { - for (const fn of eventFns) { - await fn() - } - const response = await db.put(group) - ctx.body = { - _id: response.id, - _rev: response.rev, - } - } catch (err) { - ctx.throw(400, err) - } -} - -exports.fetch = async function (ctx: any) { - const db = getGlobalDB() - const response = await db.allDocs( - groups.getUserGroupsParams(null, { - include_docs: true, - }) - ) - ctx.body = response.rows.map((row: any) => row.doc) -} - -exports.destroy = async function (ctx: any) { - const db = getGlobalDB() - const { id, rev } = ctx.params - const group = await db.get(id) - try { - await db.remove(id, rev) - await events.group.deleted(group) - ctx.body = { message: "Group deleted successfully" } - } catch (err: any) { - ctx.throw(err.status, err) - } -} - -/** - * Gets a group by ID from the global database. - */ -exports.find = async function (ctx: any) { - const db = getGlobalDB() - try { - ctx.body = await db.get(ctx.params.id) - } catch (err: any) { - ctx.throw(err.status, err) - } -} diff --git a/packages/worker/src/api/routes/global/groups.js b/packages/worker/src/api/routes/global/groups.ts similarity index 57% rename from packages/worker/src/api/routes/global/groups.js rename to packages/worker/src/api/routes/global/groups.ts index 2bbf1e5049..6d7cad53e6 100644 --- a/packages/worker/src/api/routes/global/groups.js +++ b/packages/worker/src/api/routes/global/groups.ts @@ -1,10 +1,10 @@ -const Router = require("@koa/router") -const controller = require("../../controllers/global/groups") -const joiValidator = require("../../../middleware/joi-validator") -const adminOnly = require("../../../middleware/adminOnly") -const Joi = require("joi") +import { groups } from "@budibase/pro" +import Router from "@koa/router" +import joiValidator from "../../../middleware/joi-validator" +import adminOnly from "../../../middleware/adminOnly" +import Joi from "joi" -const router = Router() +const router = new Router() function buildGroupSaveValidation() { // prettier-ignore @@ -28,10 +28,10 @@ router "/api/global/groups", adminOnly, buildGroupSaveValidation(), - controller.save + groups.save ) - .get("/api/global/groups", controller.fetch) - .delete("/api/global/groups/:id/:rev", adminOnly, controller.destroy) - .get("/api/global/groups/:id", adminOnly, controller.find) + .get("/api/global/groups", groups.fetch) + .delete("/api/global/groups/:id/:rev", adminOnly, groups.destroy) + .get("/api/global/groups/:id", adminOnly, groups.find) module.exports = router