Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Backend
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
JetBrains YouTrack
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
KSZK
DevTeam
kszkepzes
Backend
Commits
2cc795d4
Commit
2cc795d4
authored
Jul 29, 2020
by
Rafael László
Browse files
Options
Downloads
Patches
Plain Diff
fix activity controller
parent
245edf82
No related branches found
No related tags found
2 merge requests
!20
working endpoints and documentation
,
!18
Resolve "Átfaktorálás"
Pipeline
#4674
passed
Jul 29, 2020
Stage: Build
Stage: Test
Changes
1
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/resources/activity/activityControllers.js
+52
-86
52 additions, 86 deletions
src/resources/activity/activityControllers.js
with
52 additions
and
86 deletions
src/resources/activity/activityControllers.js
+
52
−
86
View file @
2cc795d4
...
@@ -17,36 +17,6 @@ const pickedKeys = [
...
@@ -17,36 +17,6 @@ const pickedKeys = [
'
comment
'
,
'
comment
'
,
]
]
const
activitySelector
=
'
_id title description date type createdAt updatedAt attendance comment
'
const
commentSelector
=
'
_id creator _creator text createdAt
'
const
attendanceSelector
=
'
_id user state
'
const
creatorSelector
=
'
-_id fullName nickName schacc
'
// Overwrites the given field with the populated User
// field: populate on this
// byPopulate: user schacc field name
async
function
populateUsersOnField
(
fieldToPopulate
,
byPopulate
)
{
let
newField
=
[]
for
(
let
field
of
fieldToPopulate
)
{
const
populated
=
await
User
.
findOne
({
schacc
:
field
[
byPopulate
],
})
.
lean
()
.
exec
()
field
[
byPopulate
]
=
pick
(
populated
,
creatorSelector
.
split
(
'
'
))
newField
.
push
(
field
)
}
return
newField
}
async
function
populateCommentsandAttendances
(
activity
)
{
activity
.
comment
=
await
populateUsersOnField
(
activity
.
comment
,
'
creator
'
)
activity
.
attendance
=
await
populateUsersOnField
(
activity
.
attendance
,
'
user
'
)
return
activity
}
// Controller
// Controller
module
.
exports
.
createOne
=
async
function
createOne
(
req
,
res
)
{
module
.
exports
.
createOne
=
async
function
createOne
(
req
,
res
)
{
...
@@ -87,21 +57,6 @@ module.exports.createOne = async function createOne(req, res) {
...
@@ -87,21 +57,6 @@ module.exports.createOne = async function createOne(req, res) {
.
exec
()
.
exec
()
}
}
await
activity
.
populate
({
path
:
'
comment
'
,
select
:
commentSelector
,
})
.
populate
({
path
:
'
attendance
'
,
select
:
attendanceSelector
,
})
.
execPopulate
()
const
populatedActivity
=
await
populateCommentsandAttendances
(
activity
.
toObject
()
)
return
res
return
res
.
status
(
200
)
.
status
(
200
)
.
json
({
.
json
({
...
@@ -125,24 +80,36 @@ module.exports.createOne = async function createOne(req, res) {
...
@@ -125,24 +80,36 @@ module.exports.createOne = async function createOne(req, res) {
module
.
exports
.
getOne
=
async
function
getOne
(
req
,
res
)
{
module
.
exports
.
getOne
=
async
function
getOne
(
req
,
res
)
{
try
{
try
{
const
activity
=
await
Activity
.
findOne
({
_id
:
req
.
params
.
id
})
const
activity
=
await
Activity
.
findOne
({
_id
:
req
.
params
.
id
})
.
populate
({
path
:
'
comment
'
,
select
:
commentSelector
,
})
.
populate
({
path
:
'
attendance
'
,
select
:
attendanceSelector
,
})
.
lean
()
.
lean
()
.
exec
()
.
exec
()
if
(
!
activity
)
if
(
!
activity
)
return
res
.
status
(
404
).
json
({
messages
:
[
'
No such activity.
'
]
})
return
res
.
status
(
404
).
json
({
messages
:
[
'
No such activity.
'
]
})
const
populatedActivity
=
await
populateCommentsandAttendances
(
activity
)
if
(
req
.
user
.
role
==
'
mentor
'
)
return
res
.
status
(
200
).
json
({
return
res
.
status
(
200
).
json
({
data
:
pick
(
populatedActivity
,
pickedKeys
)
})
data
:
pick
(
activity
,
pickedKeys
),
})
return
res
.
status
(
200
).
json
({
data
:
pick
(
activity
,
[
'
_id
'
,
'
title
'
,
'
description
'
,
'
date
'
,
'
type
'
,
'
createdAt
'
,
'
updatedAt
'
,
]),
})
}
catch
(
err
)
{
}
catch
(
err
)
{
if
(
err
.
name
==
'
ValidationError
'
)
{
// Throwed by Mongoose
let
messages
=
[]
for
(
field
in
err
.
errors
)
{
messages
.
push
(
err
.
errors
[
field
].
message
)
}
return
res
.
status
(
422
).
json
({
messages
})
}
console
.
error
(
err
)
console
.
error
(
err
)
return
res
.
status
(
500
).
json
({
message
:
err
.
message
})
return
res
.
status
(
500
).
json
({
message
:
err
.
message
})
}
}
...
@@ -150,31 +117,25 @@ module.exports.getOne = async function getOne(req, res) {
...
@@ -150,31 +117,25 @@ module.exports.getOne = async function getOne(req, res) {
module
.
exports
.
getMany
=
async
function
getMany
(
req
,
res
)
{
module
.
exports
.
getMany
=
async
function
getMany
(
req
,
res
)
{
try
{
try
{
const
activity
=
await
Activity
.
find
()
const
activity
=
await
Activity
.
find
().
select
(
'
-__v
'
).
lean
().
exec
()
.
populate
({
path
:
'
comment
'
,
select
:
'
_id creator text createdAt
'
,
})
.
populate
({
path
:
'
attendance
'
,
select
:
'
_id user state
'
,
})
.
select
(
'
-__v
'
)
.
lean
()
.
exec
()
if
(
!
activity
)
if
(
!
activity
)
return
res
.
status
(
404
).
json
({
message
:
'
Activity not found!
'
})
return
res
.
status
(
404
).
json
({
message
:
'
Activity not found!
'
})
res
.
status
(
200
).
json
({
res
.
status
(
200
).
json
({
data
:
await
Promise
.
all
(
data
:
activity
.
map
(
function
pickKeys
(
doc
)
{
activity
.
map
(
async
function
pickKeys
(
doc
)
{
const
populatedActivity
=
await
populateCommentsandAttendances
(
doc
)
return
pick
(
populatedActivity
,
pickedKeys
)
return
pick
(
populatedActivity
,
pickedKeys
)
})
}),
),
})
})
}
catch
(
err
)
{
}
catch
(
err
)
{
if
(
err
.
name
==
'
ValidationError
'
)
{
// Throwed by Mongoose
let
messages
=
[]
for
(
field
in
err
.
errors
)
{
messages
.
push
(
err
.
errors
[
field
].
message
)
}
return
res
.
status
(
422
).
json
({
messages
})
}
console
.
error
(
err
)
console
.
error
(
err
)
res
.
status
(
500
).
json
({
message
:
err
.
message
})
res
.
status
(
500
).
json
({
message
:
err
.
message
})
}
}
...
@@ -185,17 +146,11 @@ module.exports.removeOne = async function removeOne(req, res) {
...
@@ -185,17 +146,11 @@ module.exports.removeOne = async function removeOne(req, res) {
const
activity
=
await
Activity
.
findByIdAndDelete
({
const
activity
=
await
Activity
.
findByIdAndDelete
({
_id
:
req
.
params
.
id
,
_id
:
req
.
params
.
id
,
})
})
.
populate
({
path
:
'
comment
'
,
select
:
'
_id creator text createdAt
'
,
})
.
select
(
'
-__v
'
)
.
lean
()
.
lean
()
.
exec
()
.
exec
()
if
(
!
activity
)
{
if
(
!
activity
)
return
res
.
status
(
404
).
json
({
message
:
'
Activity not found!
'
})
return
res
.
status
(
404
).
json
({
message
:
'
Activity not found!
'
})
}
await
Attendance
.
deleteMany
({
await
Attendance
.
deleteMany
({
_id
:
activity
.
attendance
.
map
(
function
getAttendanceIds
(
element
)
{
_id
:
activity
.
attendance
.
map
(
function
getAttendanceIds
(
element
)
{
...
@@ -211,6 +166,14 @@ module.exports.removeOne = async function removeOne(req, res) {
...
@@ -211,6 +166,14 @@ module.exports.removeOne = async function removeOne(req, res) {
return
res
.
status
(
200
).
json
({
data
:
pick
(
activity
,
pickedKeys
)
})
return
res
.
status
(
200
).
json
({
data
:
pick
(
activity
,
pickedKeys
)
})
}
catch
(
err
)
{
}
catch
(
err
)
{
if
(
err
.
name
==
'
ValidationError
'
)
{
// Throwed by Mongoose
let
messages
=
[]
for
(
field
in
err
.
errors
)
{
messages
.
push
(
err
.
errors
[
field
].
message
)
}
return
res
.
status
(
422
).
json
({
messages
})
}
console
.
error
(
err
)
console
.
error
(
err
)
return
res
.
status
(
500
).
json
({
message
:
err
.
message
})
return
res
.
status
(
500
).
json
({
message
:
err
.
message
})
}
}
...
@@ -223,11 +186,6 @@ module.exports.updateOne = async function updateOne(req, res) {
...
@@ -223,11 +186,6 @@ module.exports.updateOne = async function updateOne(req, res) {
omit
(
req
.
body
,
[
'
attendance
'
,
'
comment
'
]),
omit
(
req
.
body
,
[
'
attendance
'
,
'
comment
'
]),
{
new
:
true
}
{
new
:
true
}
)
)
.
populate
({
path
:
'
comment
'
,
select
:
'
_id creator text createdAt
'
,
})
.
select
(
'
-__v
'
)
.
lean
()
.
lean
()
.
exec
()
.
exec
()
...
@@ -236,6 +194,14 @@ module.exports.updateOne = async function updateOne(req, res) {
...
@@ -236,6 +194,14 @@ module.exports.updateOne = async function updateOne(req, res) {
res
.
status
(
200
).
json
({
data
:
pick
(
activity
,
pickedKeys
)
})
res
.
status
(
200
).
json
({
data
:
pick
(
activity
,
pickedKeys
)
})
}
catch
(
err
)
{
}
catch
(
err
)
{
if
(
err
.
name
==
'
ValidationError
'
)
{
// Throwed by Mongoose
let
messages
=
[]
for
(
field
in
err
.
errors
)
{
messages
.
push
(
err
.
errors
[
field
].
message
)
}
return
res
.
status
(
422
).
json
({
messages
})
}
console
.
error
(
err
)
console
.
error
(
err
)
res
.
status
(
500
).
json
({
message
:
err
.
message
})
res
.
status
(
500
).
json
({
message
:
err
.
message
})
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment