aboutsummaryrefslogtreecommitdiffstats
path: root/src/server/app/Controllers/Http/WorkspaceController.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/app/Controllers/Http/WorkspaceController.js')
-rw-r--r--src/server/app/Controllers/Http/WorkspaceController.js148
1 files changed, 0 insertions, 148 deletions
diff --git a/src/server/app/Controllers/Http/WorkspaceController.js b/src/server/app/Controllers/Http/WorkspaceController.js
deleted file mode 100644
index 7990b8434..000000000
--- a/src/server/app/Controllers/Http/WorkspaceController.js
+++ /dev/null
@@ -1,148 +0,0 @@
1const Workspace = use('App/Models/Workspace');
2const {
3 validateAll,
4} = use('Validator');
5
6const uuid = require('uuid/v4');
7
8class WorkspaceController {
9 // Create a new workspace for user
10 async create({
11 request,
12 response,
13 }) {
14 // Validate user input
15 const validation = await validateAll(request.all(), {
16 name: 'required|alpha',
17 });
18 if (validation.fails()) {
19 return response.status(401).send({
20 message: 'Invalid POST arguments',
21 messages: validation.messages(),
22 status: 401,
23 });
24 }
25
26 const data = request.all();
27
28 // Get new, unused uuid
29 let workspaceId;
30 do {
31 workspaceId = uuid();
32 } while ((await Workspace.query().where('workspaceId', workspaceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop
33
34 const order = (await Workspace.all()).rows.length;
35
36 await Workspace.create({
37 workspaceId,
38 name: data.name,
39 order,
40 services: JSON.stringify([]),
41 data: JSON.stringify(data),
42 });
43
44 return response.send({
45 userId: 1,
46 name: data.name,
47 id: workspaceId,
48 order,
49 workspaces: [],
50 });
51 }
52
53 async edit({
54 request,
55 response,
56 params,
57 }) {
58 // Validate user input
59 const validation = await validateAll(request.all(), {
60 name: 'required|alpha',
61 services: 'required|array',
62 });
63 if (validation.fails()) {
64 return response.status(401).send({
65 message: 'Invalid POST arguments',
66 messages: validation.messages(),
67 status: 401,
68 });
69 }
70
71 const data = request.all();
72 const {
73 id,
74 } = params;
75
76 // Update data in database
77 await (Workspace.query()
78 .where('workspaceId', id)).update({
79 name: data.name,
80 services: JSON.stringify(data.services),
81 });
82
83 // Get updated row
84 const workspace = (await Workspace.query()
85 .where('workspaceId', id).fetch()).rows[0];
86
87 return response.send({
88 id: workspace.workspaceId,
89 name: data.name,
90 order: workspace.order,
91 services: data.services,
92 userId: 1,
93 });
94 }
95
96 async delete({
97 request,
98 response,
99 params,
100 }) {
101 // Validate user input
102 const validation = await validateAll(request.all(), {
103 id: 'required',
104 });
105 if (validation.fails()) {
106 return response.status(401).send({
107 message: 'Invalid POST arguments',
108 messages: validation.messages(),
109 status: 401,
110 });
111 }
112
113 const {
114 id,
115 } = params;
116
117 // Update data in database
118 await (Workspace.query()
119 .where('workspaceId', id)).delete();
120
121 return response.send({
122 message: 'Successfully deleted workspace',
123 });
124 }
125
126 // List all workspaces a user has created
127 async list({
128 response,
129 }) {
130 const workspaces = (await Workspace.all()).rows;
131 // Convert to array with all data Franz wants
132 let workspacesArray = [];
133 if (workspaces) {
134 workspacesArray = workspaces.map(workspace => ({
135 id: workspace.workspaceId,
136 name: workspace.name,
137 order: workspace.order,
138 services: JSON.parse(workspace.services),
139 userId: 1,
140 }));
141 }
142
143
144 return response.send(workspacesArray);
145 }
146}
147
148module.exports = WorkspaceController;