Skip to content

Commit c31d7db

Browse files
RahulGoyal-techAchintya-Chatterjeeprakashchoudhary07
authored
Remove user.data() in firestore data set (#2282)
* Updated set * Added Dev Feature Flag * Added variable for dev flag * Update dev feature flag to be used as boolean * Tests working of addOrUpdate feature when dev feature flag is true --------- Co-authored-by: Achintya Chatterjee <[email protected]> Co-authored-by: Prakash Choudhary <[email protected]>
1 parent c976b31 commit c31d7db

File tree

3 files changed

+57
-19
lines changed

3 files changed

+57
-19
lines changed

controllers/users.js

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,12 @@ const discordDeveloperRoleId = config.get("discordDeveloperRoleId");
3939

4040
const verifyUser = async (req, res) => {
4141
const userId = req.userData.id;
42+
const devFeatureFlag = req.query.dev === "true";
4243
try {
4344
if (!req.userData?.profileURL) {
4445
return res.boom.serverUnavailable("ProfileURL is Missing");
4546
}
46-
await userQuery.addOrUpdate({ profileStatus: "PENDING" }, userId);
47+
await userQuery.addOrUpdate({ profileStatus: "PENDING" }, userId, devFeatureFlag);
4748
} catch (error) {
4849
logger.error(`Error while verifying user: ${error}`);
4950
return res.boom.serverUnavailable(SOMETHING_WENT_WRONG);
@@ -500,7 +501,7 @@ const updateSelf = async (req, res) => {
500501
const { roles } = discordMember;
501502
if (roles && roles.includes(discordDeveloperRoleId)) {
502503
if (req.body.disabledRoles && devFeatureFlag) {
503-
const updatedUser = await userQuery.addOrUpdate({ disabled_roles: rolesToDisable }, userId);
504+
const updatedUser = await userQuery.addOrUpdate({ disabled_roles: rolesToDisable }, userId, devFeatureFlag);
504505
if (updatedUser) {
505506
return res
506507
.status(200)
@@ -514,7 +515,7 @@ const updateSelf = async (req, res) => {
514515
}
515516
}
516517

517-
const updatedUser = await userQuery.addOrUpdate(req.body, userId);
518+
const updatedUser = await userQuery.addOrUpdate(req.body, userId, devFeatureFlag);
518519

519520
if (!updatedUser.isNewUser) {
520521
// Success criteria, user finished the sign-up process.
@@ -711,9 +712,9 @@ const getUserImageForVerification = async (req, res) => {
711712
const updateUser = async (req, res) => {
712713
try {
713714
const { id: profileDiffId, message } = req.body;
714-
const devFeatureFlag = req.query.dev;
715+
const devFeatureFlag = req.query.dev === "true";
715716
let profileDiffData;
716-
if (devFeatureFlag === "true") {
717+
if (devFeatureFlag) {
717718
profileDiffData = await profileDiffsQuery.fetchProfileDiffUnobfuscated(profileDiffId);
718719
} else {
719720
profileDiffData = await profileDiffsQuery.fetchProfileDiff(profileDiffId);
@@ -728,7 +729,7 @@ const updateUser = async (req, res) => {
728729

729730
await profileDiffsQuery.updateProfileDiff({ approval: profileDiffStatus.APPROVED }, profileDiffId);
730731

731-
await userQuery.addOrUpdate(profileDiff, userId);
732+
await userQuery.addOrUpdate(profileDiff, userId, devFeatureFlag);
732733

733734
const meta = {
734735
approvedBy: req.userData.id,
@@ -749,9 +750,9 @@ const updateUser = async (req, res) => {
749750
const generateChaincode = async (req, res) => {
750751
try {
751752
const { id } = req.userData;
752-
753+
const devFeatureFlag = req.query.dev === "true";
753754
const chaincode = await chaincodeQuery.storeChaincode(id);
754-
await userQuery.addOrUpdate({ chaincode }, id);
755+
await userQuery.addOrUpdate({ chaincode }, id, devFeatureFlag);
755756
return res.json({
756757
chaincode,
757758
message: "Chaincode returned successfully",
@@ -766,7 +767,8 @@ const profileURL = async (req, res) => {
766767
try {
767768
const userId = req.userData.id;
768769
const { profileURL } = req.body;
769-
await userQuery.addOrUpdate({ profileURL }, userId);
770+
const devFeatureFlag = req.query.dev === "true";
771+
await userQuery.addOrUpdate({ profileURL }, userId, devFeatureFlag);
770772
return res.json({
771773
message: "updated profile URL!!",
772774
});
@@ -958,6 +960,7 @@ const setInDiscordScript = async (req, res) => {
958960
const updateRoles = async (req, res) => {
959961
try {
960962
const result = await dataAccess.retrieveUsers({ id: req.params.id });
963+
const devFeatureFlag = req.query.dev === "true";
961964
if (result?.userExists) {
962965
const dataToUpdate = req.body;
963966
const roles = req?.userData?.roles;
@@ -966,7 +969,7 @@ const updateRoles = async (req, res) => {
966969

967970
const response = await getRoleToUpdate(result.user, dataToUpdate);
968971
if (response.updateRole) {
969-
await userQuery.addOrUpdate(response.newUserRoles, result.user.id);
972+
await userQuery.addOrUpdate(response.newUserRoles, result.user.id, devFeatureFlag);
970973
if (dataToUpdate?.archived) {
971974
const body = {
972975
reason: reason || "",

models/users.js

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ const archiveUsers = async (usersData) => {
8484
* @param userId { String }: User Id String to be used to update the user
8585
* @return {Promise<{isNewUser: boolean, userId: string}|{isNewUser: boolean, userId: string}>}
8686
*/
87-
const addOrUpdate = async (userData, userId = null) => {
87+
const addOrUpdate = async (userData, userId = null, devFeatureFlag) => {
8888
try {
8989
// userId exists Update user
9090
if (userId !== null) {
@@ -96,14 +96,24 @@ const addOrUpdate = async (userData, userId = null) => {
9696
if ("id" in userData) {
9797
delete userData.id;
9898
}
99-
await userModel.doc(userId).set(
100-
{
101-
...user.data(),
102-
...userData,
103-
updated_at: Date.now(),
104-
},
105-
{ merge: true }
106-
);
99+
if (devFeatureFlag) {
100+
await userModel.doc(userId).set(
101+
{
102+
...userData,
103+
updated_at: Date.now(),
104+
},
105+
{ merge: true }
106+
);
107+
} else {
108+
await userModel.doc(userId).set(
109+
{
110+
...user.data(),
111+
...userData,
112+
updated_at: Date.now(),
113+
},
114+
{ merge: true }
115+
);
116+
}
107117

108118
const logData = {
109119
type: logType.USER_DETAILS_UPDATED,

test/unit/models/users.test.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,31 @@ describe("users", function () {
117117
});
118118
});
119119

120+
describe("addOrUpdate-Dev Feature Flag", function () {
121+
it("should update the user collection when userId is passed", async function () {
122+
const userData1 = userDataArray[0];
123+
const userData2 = userDataArray[1];
124+
const updatedUserData = {};
125+
126+
Object.assign(updatedUserData, userData1, userData2);
127+
128+
// Add the user the first time
129+
const { isNewUser, userId } = await users.addOrUpdate(userData1, null, true);
130+
131+
// Update the user with same data
132+
const { isNewUser: updatedIsNewUserFlag } = await users.addOrUpdate(userData2, userId, true);
133+
134+
const data = (await userModel.doc(userId).get()).data();
135+
136+
Object.keys(updatedUserData).forEach((key) => {
137+
expect(updatedUserData[key]).to.deep.equal(data[key]);
138+
});
139+
140+
expect(isNewUser).to.equal(true);
141+
expect(updatedIsNewUserFlag).to.equal(false);
142+
});
143+
});
144+
120145
describe("fetch user details based on discord id", function () {
121146
let [userId0] = [];
122147

0 commit comments

Comments
 (0)