Skip to content

Commit 3685b64

Browse files
authored
Merge pull request #385 from harshith-venkatesh/develop
Create QueryModel to fetch users of RDS with roles of member
2 parents 3ffc3bf + fae99a4 commit 3685b64

File tree

4 files changed

+49
-12
lines changed

4 files changed

+49
-12
lines changed

constants/users.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,9 @@
11
const userStatusEnum = ['ooo', 'idle', 'active']
2-
module.exports = userStatusEnum
2+
const ROLES = {
3+
ADMIN: 'admin',
4+
APPOWNER: 'app_owner',
5+
DEFAULT: 'default',
6+
MEMBER: 'member',
7+
SUPERUSER: 'super_user'
8+
}
9+
module.exports = { userStatusEnum, ROLES }

controllers/members.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
const { fetchMembers, migrateUsers, deleteIsMemberProperty } = require('../models/members')
1+
const { ROLES } = require('../constants/users')
2+
const { fetchUsers, migrateUsers, deleteIsMemberProperty, fetchUsersWithRole } = require('../models/members')
23
const tasks = require('../models/tasks')
34

45
/**
@@ -10,11 +11,11 @@ const tasks = require('../models/tasks')
1011

1112
const getMembers = async (req, res) => {
1213
try {
13-
const allMembers = await fetchMembers()
14+
const allUsers = await fetchUsers()
1415

1516
return res.json({
16-
message: allMembers.length ? 'Members returned successfully!' : 'No member found',
17-
members: allMembers
17+
message: allUsers.length ? 'Members returned successfully!' : 'No member found',
18+
members: allUsers
1819
})
1920
} catch (error) {
2021
logger.error(`Error while fetching all members: ${error}`)
@@ -31,9 +32,9 @@ const getMembers = async (req, res) => {
3132

3233
const getIdleMembers = async (req, res) => {
3334
try {
34-
const allMembers = await fetchMembers()
35+
const onlyMembers = await fetchUsersWithRole(ROLES.MEMBER)
3536
const taskParticipants = await tasks.fetchActiveTaskMembers()
36-
const idleMembers = allMembers?.filter(({ id }) => !taskParticipants.has(id))
37+
const idleMembers = onlyMembers?.filter(({ id }) => !taskParticipants.has(id))
3738
const idleMemberUserNames = idleMembers?.map((member) => member.username)
3839

3940
return res.json({

middlewares/validators/user.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const joi = require('joi')
2-
const userStatusEnum = require('../../constants/users')
2+
const { userStatusEnum } = require('../../constants/users')
33

44
const updateUser = async (req, res, next) => {
55
const schema = joi.object().keys({

models/members.js

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ const firestore = require('../utils/firestore')
77
const userModel = firestore.collection('users')
88

99
/**
10-
* Fetches the data about our members
10+
* Fetches the data about our users
1111
* @return {Promise<userModel|Array>}
1212
*/
1313

14-
const fetchMembers = async () => {
14+
const fetchUsers = async () => {
1515
try {
1616
const snapshot = await userModel.get()
1717

@@ -98,8 +98,37 @@ const deleteIsMemberProperty = async () => {
9898
}
9999
}
100100

101+
/**
102+
* Fetches the data about our users with roles
103+
* @return {Promise<userModel|Array>}
104+
*/
105+
106+
const fetchUsersWithRole = async (role) => {
107+
try {
108+
const snapshot = await userModel.where(`roles.${role}`, '==', true).get()
109+
const onlyMembers = []
110+
111+
if (!snapshot.empty) {
112+
snapshot.forEach((doc) => {
113+
onlyMembers.push({
114+
id: doc.id,
115+
...doc.data(),
116+
phone: undefined,
117+
email: undefined,
118+
tokens: undefined
119+
})
120+
})
121+
}
122+
return onlyMembers
123+
} catch (err) {
124+
logger.error('Error retrieving members data with roles of member', err)
125+
throw err
126+
}
127+
}
128+
101129
module.exports = {
102-
fetchMembers,
130+
fetchUsers,
103131
migrateUsers,
104-
deleteIsMemberProperty
132+
deleteIsMemberProperty,
133+
fetchUsersWithRole
105134
}

0 commit comments

Comments
 (0)