Skip to content

Commit 0c1ce34

Browse files
committed
team management challenge and final fixes
1 parent c9ece96 commit 0c1ce34

File tree

28 files changed

+3211
-1215
lines changed

28 files changed

+3211
-1215
lines changed

local/mock-services/server.js

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const middlewares = jsonServer.defaults();
1414
const authMiddleware = require('./authMiddleware');
1515

1616
const members = require('./services.json').members;
17+
const roles = require('./services.json').roles;
1718

1819
server.use(middlewares);
1920

@@ -29,7 +30,12 @@ server.get('/v3/members/_search', (req, res) => {
2930
const ret = {};
3031
const splitted = single.split(':');
3132
// if the result can be parsed successfully
32-
const parsed = jsprim.parseInteger(splitted[1], { allowTrailing: true, trimWhitespace: true });
33+
let parsed = Error();
34+
try {
35+
parsed = jsprim.parseInteger(splitted[1], { allowTrailing: true, trimWhitespace: true });
36+
} catch (e) {
37+
// no-empty
38+
}
3339
if (parsed instanceof Error) {
3440
ret[splitted[0]] = splitted[1];
3541
} else {
@@ -60,6 +66,29 @@ server.get('/v3/members/_search', (req, res) => {
6066
res.status(200).json(response);
6167
});
6268

69+
// add additional search route for project members
70+
server.get('/roles', (req, res) => {
71+
const filter = _.isString(req.query.filter) ?
72+
req.query.filter.replace('%2520', ' ').replace('%20', ' ').split('=') : [];
73+
const cloned = _.cloneDeep(roles);
74+
const response = {
75+
id: 'res1',
76+
result: {
77+
success: true,
78+
status: 200,
79+
},
80+
};
81+
const role = filter ? _.find(cloned, (single) => {
82+
if (single.userId === filter[1]) {
83+
return single.roles;
84+
}
85+
return null;
86+
}) : null;
87+
88+
response.result.content = role ? role.roles : [];
89+
res.status(200).json(response);
90+
});
91+
6392
server.use(router);
6493

6594
server.listen(PORT, () => {

local/mock-services/services.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,5 +300,13 @@
300300
},
301301
"version": "v3"
302302
}
303+
],
304+
"roles": [
305+
{ "userId": "40051334", "roles": [ { "roleName": "Connect Manager" } ] },
306+
{ "userId": "40051332", "roles": [ { "roleName": "Connect Copilot" } ] },
307+
{ "userId": "40051333", "roles": [ { "roleName": "administrator" } ] },
308+
{ "userId": "40051336", "roles": [ { "roleName": "Connect Admin" }, { "roleName": "Connect Copilot" } ] },
309+
{ "userId": "40051331", "roles": [ ] },
310+
{ "userId": "40051335", "roles": [ ] }
303311
]
304312
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
--
2+
-- CREATE NEW TABLES:
3+
-- project_member_invites
4+
--
5+
6+
--
7+
-- project_member_invites
8+
--
9+
10+
CREATE TABLE project_member_invites (
11+
id bigint NOT NULL,
12+
"projectId" bigint,
13+
"userId" bigint,
14+
email character varying(255),
15+
role character varying(255) NOT NULL,
16+
status character varying(255) NOT NULL,
17+
"createdAt" timestamp with time zone,
18+
"updatedAt" timestamp with time zone,
19+
"deletedAt" timestamp with time zone,
20+
"createdBy" integer NOT NULL,
21+
"updatedBy" integer NOT NULL,
22+
"deletedBy" bigint
23+
);
24+
25+
CREATE SEQUENCE project_member_invites_id_seq
26+
START WITH 1
27+
INCREMENT BY 1
28+
NO MINVALUE
29+
NO MAXVALUE
30+
CACHE 1;
31+
32+
ALTER TABLE project_member_invites_id_seq OWNER BY project_member_invites.id;
33+
34+
ALTER TABLE ONLY project_member_invites
35+
ADD CONSTRAINT "project_member_invites_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES projects(id) ON UPDATE CASCADE ON DELETE CASCADE;

0 commit comments

Comments
 (0)