11const chaincodeQuery = require ( "../models/chaincodes" ) ;
22const userQuery = require ( "../models/users" ) ;
33const profileDiffsQuery = require ( "../models/profileDiffs" ) ;
4+ const firestore = require ( "../utils/firestore" ) ;
5+ const memberRoleModel = firestore . collection ( "member-group-roles" ) ;
6+ const logsModel = firestore . collection ( "logs" ) ;
47const admin = require ( "firebase-admin" ) ;
58const logsQuery = require ( "../models/logs" ) ;
69const imageService = require ( "../services/imageService" ) ;
@@ -31,7 +34,6 @@ const { addLog } = require("../models/logs");
3134const { getUserStatus } = require ( "../models/userStatus" ) ;
3235const config = require ( "config" ) ;
3336const { generateUniqueUsername } = require ( "../services/users" ) ;
34- const { addGroupRoleToMember } = require ( "../models/discordactions" ) ;
3537
3638const discordDeveloperRoleId = config . get ( "discordDeveloperRoleId" ) ;
3739
@@ -598,6 +600,7 @@ const markUnverified = async (req, res) => {
598600 const unverifiedRoleId = config . get ( "discordUnverifiedRoleId" ) ;
599601 const usersToApplyUnverifiedRole = [ ] ;
600602 const addRolePromises = [ ] ;
603+ const batchPromises = [ ] ;
601604
602605 allRdsLoggedInUsers . forEach ( ( user ) => {
603606 rdsUserMap [ user . discordId ] = true ;
@@ -613,23 +616,40 @@ const markUnverified = async (req, res) => {
613616 }
614617 } ) ;
615618
616- usersToApplyUnverifiedRole . forEach ( ( id ) => {
617- addRolePromises . push (
618- addRoleToUser ( id , unverifiedRoleId ) ,
619- addGroupRoleToMember ( {
619+ const batchSize = 500 ;
620+ const batches = Array . from ( { length : Math . ceil ( usersToApplyUnverifiedRole . length / batchSize ) } , ( _ , index ) =>
621+ usersToApplyUnverifiedRole . slice ( index * batchSize , index * batchSize + batchSize )
622+ ) ;
623+
624+ batches . forEach ( ( batch ) => {
625+ const firestoreBatch = firestore . batch ( ) ;
626+
627+ batch . forEach ( ( id ) => {
628+ const memberRoleRef = memberRoleModel . doc ( id ) ;
629+ const logRef = logsModel . doc ( ) ;
630+
631+ firestoreBatch . set ( memberRoleRef , {
620632 roleid : unverifiedRoleId ,
621633 userid : id ,
622634 date : admin . firestore . Timestamp . fromDate ( new Date ( ) ) ,
623- } ) ,
624- addLog (
625- logType . ADD_UNVERIFIED_ROLE ,
626- { roleid : unverifiedRoleId , userid : id } ,
627- { message : "Unverified role added successfully" }
628- )
629- ) ;
635+ } ) ;
636+
637+ firestoreBatch . set ( logRef , {
638+ type : logType . ADD_UNVERIFIED_ROLE ,
639+ meta : { roleid : unverifiedRoleId , userid : id } ,
640+ body : { message : "Unverified role added successfully" } ,
641+ timestamp : admin . firestore . Timestamp . fromDate ( new Date ( ) ) ,
642+ } ) ;
643+ } ) ;
644+
645+ batchPromises . push ( firestoreBatch . commit ( ) ) ;
646+ } ) ;
647+
648+ usersToApplyUnverifiedRole . forEach ( ( id ) => {
649+ addRolePromises . push ( addRoleToUser ( id , unverifiedRoleId ) ) ;
630650 } ) ;
631651
632- await Promise . all ( addRolePromises ) ;
652+ await Promise . all ( [ ... addRolePromises , ... batchPromises ] ) ;
633653 return res . json ( { message : "ROLES APPLIED SUCCESSFULLY" } ) ;
634654 } catch ( err ) {
635655 logger . error ( err ) ;
0 commit comments