@kipicore/dbcore 1.1.16 → 1.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/configs/aws.js +9 -6
- package/dist/esm/configs/env.js +96 -57
- package/dist/esm/constants/app.js +336 -330
- package/dist/esm/constants/defaultModelAttributes.js +12 -9
- package/dist/esm/constants/errorMessages.js +219 -214
- package/dist/esm/constants/httpStatusCode.js +5 -2
- package/dist/esm/constants/successMessages.js +223 -217
- package/dist/esm/helpers/s3Uploader.js +25 -17
- package/dist/esm/helpers/utils.js +145 -66
- package/dist/esm/index.js +758 -151
- package/dist/esm/interfaces/academicCalendarInterface.js +2 -1
- package/dist/esm/interfaces/accountHasReceiptDetailsInterface.js +2 -1
- package/dist/esm/interfaces/announcementInterface.js +2 -1
- package/dist/esm/interfaces/approvalRequestInterface.js +2 -1
- package/dist/esm/interfaces/areaInterface.js +2 -1
- package/dist/esm/interfaces/attendanceInterface.js +2 -1
- package/dist/esm/interfaces/bankAccountDetailsInterface.js +2 -1
- package/dist/esm/interfaces/bannerInterface.js +2 -1
- package/dist/esm/interfaces/batchInterface.js +2 -1
- package/dist/esm/interfaces/batchSubjectBookAssessmentInterface.js +2 -1
- package/dist/esm/interfaces/batchSubjectProjectAssessmentInterface.js +2 -1
- package/dist/esm/interfaces/blogInterface.js +2 -1
- package/dist/esm/interfaces/bookAssessmentDateInterface.js +2 -1
- package/dist/esm/interfaces/careerInterface.js +2 -1
- package/dist/esm/interfaces/categoriesInterface.js +2 -1
- package/dist/esm/interfaces/certificatesHistoryInterface.js +2 -1
- package/dist/esm/interfaces/certificatesManagementInterface.js +2 -1
- package/dist/esm/interfaces/cityInterface.js +2 -1
- package/dist/esm/interfaces/classRoomInterface.js +2 -1
- package/dist/esm/interfaces/cloudStorageInterface.js +2 -1
- package/dist/esm/interfaces/coinPurchaseOfferInterface.js +2 -1
- package/dist/esm/interfaces/columnInterface.js +2 -1
- package/dist/esm/interfaces/commanInterface.js +2 -1
- package/dist/esm/interfaces/contactFeedBackInterface.js +2 -1
- package/dist/esm/interfaces/countryInterface.js +2 -1
- package/dist/esm/interfaces/courseHasVisitorsInterface.js +2 -1
- package/dist/esm/interfaces/courseInterface.js +2 -1
- package/dist/esm/interfaces/dailyBookInterface.js +2 -1
- package/dist/esm/interfaces/dashboardManagementInterface.js +2 -1
- package/dist/esm/interfaces/driverInterface.js +2 -1
- package/dist/esm/interfaces/entityGroupInterface.js +2 -1
- package/dist/esm/interfaces/eventInterface.js +2 -1
- package/dist/esm/interfaces/examGroupInterface.js +2 -1
- package/dist/esm/interfaces/examHasAnswerSheetInterface.js +2 -1
- package/dist/esm/interfaces/examInterface.js +2 -1
- package/dist/esm/interfaces/facilityInterface.js +2 -1
- package/dist/esm/interfaces/featureActionInterface.js +2 -1
- package/dist/esm/interfaces/feeHistoryDetailsInterface.js +2 -1
- package/dist/esm/interfaces/feeHistoryInterface.js +2 -1
- package/dist/esm/interfaces/feeReminderInterface.js +2 -1
- package/dist/esm/interfaces/feeReminderSettingInterface.js +2 -1
- package/dist/esm/interfaces/feeReminderTypeInterface.js +2 -1
- package/dist/esm/interfaces/feeTypeHasTermsInterface.js +2 -1
- package/dist/esm/interfaces/feeTypeInterface.js +2 -1
- package/dist/esm/interfaces/feedBackInterface.js +2 -1
- package/dist/esm/interfaces/feesCollectionInterface.js +2 -1
- package/dist/esm/interfaces/fileStorageInterface.js +2 -1
- package/dist/esm/interfaces/floorManagementInterface.js +2 -1
- package/dist/esm/interfaces/generateIdCardInterface.js +2 -1
- package/dist/esm/interfaces/greetingsInterface.js +2 -1
- package/dist/esm/interfaces/holidayInterface.js +2 -1
- package/dist/esm/interfaces/homeworkInterface.js +2 -1
- package/dist/esm/interfaces/informationSupportInterface.js +2 -1
- package/dist/esm/interfaces/inquiryInterface.js +2 -1
- package/dist/esm/interfaces/instituteEntityInterface.js +2 -1
- package/dist/esm/interfaces/instituteEntityTypeInterface.js +2 -1
- package/dist/esm/interfaces/instituteInterface.js +2 -1
- package/dist/esm/interfaces/instituteSubscriptionPlanInterface.js +2 -1
- package/dist/esm/interfaces/inventoryHistoryInterface.js +2 -1
- package/dist/esm/interfaces/inventoryInterface.js +2 -1
- package/dist/esm/interfaces/invoiceInterface.js +2 -1
- package/dist/esm/interfaces/jobApplyInterface.js +2 -1
- package/dist/esm/interfaces/lectureHistoryInterface.js +2 -1
- package/dist/esm/interfaces/lectureInterface.js +2 -1
- package/dist/esm/interfaces/masterLeaveInterface.js +2 -1
- package/dist/esm/interfaces/moduleFeatureInterface.js +2 -1
- package/dist/esm/interfaces/moduleInterface.js +2 -1
- package/dist/esm/interfaces/offersInterface.js +2 -1
- package/dist/esm/interfaces/paymentTermsInterface.js +2 -1
- package/dist/esm/interfaces/pdcChequeInterface.js +2 -1
- package/dist/esm/interfaces/pdcHistoryInterface.js +2 -1
- package/dist/esm/interfaces/photosGalleryInterface.js +2 -1
- package/dist/esm/interfaces/pincodeInterface.js +2 -1
- package/dist/esm/interfaces/plannerInterface.js +2 -1
- package/dist/esm/interfaces/productInterface.js +2 -1
- package/dist/esm/interfaces/projectAssessmentOptionInterface.js +2 -1
- package/dist/esm/interfaces/replaceTeacherInterface.js +2 -1
- package/dist/esm/interfaces/roleInterface.js +2 -1
- package/dist/esm/interfaces/rulesRegulationInterface.js +2 -1
- package/dist/esm/interfaces/schoolFeeCollectionInterface.js +2 -1
- package/dist/esm/interfaces/schoolFeeInterface.js +2 -1
- package/dist/esm/interfaces/schoolOfferInterface.js +2 -1
- package/dist/esm/interfaces/sendNotificationInerface.js +2 -1
- package/dist/esm/interfaces/slotInterface.js +2 -1
- package/dist/esm/interfaces/stateInterface.js +2 -1
- package/dist/esm/interfaces/subCategoriesInterface.js +2 -1
- package/dist/esm/interfaces/subjectHasFeeInterface.js +2 -1
- package/dist/esm/interfaces/subjectHasPayFeeHistoryInterface.js +2 -1
- package/dist/esm/interfaces/subjectIndexInterface.js +2 -1
- package/dist/esm/interfaces/subscriptionPlanInterface.js +2 -1
- package/dist/esm/interfaces/syllabusInterface.js +2 -1
- package/dist/esm/interfaces/taskManagementInterface.js +2 -1
- package/dist/esm/interfaces/testimonialInterface.js +2 -1
- package/dist/esm/interfaces/toDoInterface.js +2 -1
- package/dist/esm/interfaces/tokenInterface.js +2 -1
- package/dist/esm/interfaces/tripInterface.js +2 -1
- package/dist/esm/interfaces/typeManagementInterface.js +2 -1
- package/dist/esm/interfaces/uniqueNumberCounterInterface.js +2 -1
- package/dist/esm/interfaces/userBookAssessmentInterface.js +2 -1
- package/dist/esm/interfaces/userDetailsInterface.js +2 -1
- package/dist/esm/interfaces/userFeeTypeByAccountInterface.js +2 -1
- package/dist/esm/interfaces/userFeeTypeInterface.js +2 -1
- package/dist/esm/interfaces/userHasAnnouncementInterface.js +2 -1
- package/dist/esm/interfaces/userHasBatchInterface.js +2 -1
- package/dist/esm/interfaces/userHasCourseInterface.js +2 -1
- package/dist/esm/interfaces/userHasDeviceInterface.js +2 -1
- package/dist/esm/interfaces/userHasFeeTermsInterface.js +2 -1
- package/dist/esm/interfaces/userHasFileInterface.js +2 -1
- package/dist/esm/interfaces/userHasHomeWorkInterface.js +2 -1
- package/dist/esm/interfaces/userHasInventoryHistoryInterface.js +2 -1
- package/dist/esm/interfaces/userHasInventoryInterface.js +2 -1
- package/dist/esm/interfaces/userHasLeaveHistoryInterface.js +2 -1
- package/dist/esm/interfaces/userHasLeaveInterface.js +2 -1
- package/dist/esm/interfaces/userHasOfferInterface.js +2 -1
- package/dist/esm/interfaces/userHasParentInterface.js +2 -1
- package/dist/esm/interfaces/userHasRoleInterface.js +2 -1
- package/dist/esm/interfaces/userHasRollNumberInterface.js +2 -1
- package/dist/esm/interfaces/userHasStorageInterface.js +2 -1
- package/dist/esm/interfaces/userHasSubjectFeeInterface.js +2 -1
- package/dist/esm/interfaces/userInstituteMetaInterface.js +2 -1
- package/dist/esm/interfaces/userInterface.js +2 -1
- package/dist/esm/interfaces/userLeaveRequestInterface.js +2 -1
- package/dist/esm/interfaces/userMetaInterface.js +2 -1
- package/dist/esm/interfaces/userPayoutDetailsInterface.js +2 -1
- package/dist/esm/interfaces/userPayoutHistoryInterface.js +2 -1
- package/dist/esm/interfaces/userPayoutInterface.js +2 -1
- package/dist/esm/interfaces/userProjectAssessmentOptionInterface.js +2 -1
- package/dist/esm/interfaces/userRequiredStepsInterface.js +2 -1
- package/dist/esm/interfaces/userSchoolMetaInterface.js +2 -1
- package/dist/esm/interfaces/vehicleInterface.js +2 -1
- package/dist/esm/interfaces/vendorManagementInterface.js +2 -1
- package/dist/esm/interfaces/videoAnalystInterface.js +2 -1
- package/dist/esm/interfaces/walletHistoryInterface.js +2 -1
- package/dist/esm/interfaces/walletInterface.js +2 -1
- package/dist/esm/interfaces/walletTransactionInterface.js +2 -1
- package/dist/esm/interfaces/workingDayInterface.js +2 -1
- package/dist/esm/interfaces/workingShiftInterface.js +2 -1
- package/dist/esm/models/mongodb/approvalRequestModel.js +43 -8
- package/dist/esm/models/mongodb/attendanceModel.js +68 -30
- package/dist/esm/models/mongodb/blogModel.js +46 -11
- package/dist/esm/models/mongodb/careerModel.js +42 -7
- package/dist/esm/models/mongodb/certificatesHistoryModel.js +39 -4
- package/dist/esm/models/mongodb/certificatesManagementModel.js +42 -7
- package/dist/esm/models/mongodb/columnModel.js +45 -10
- package/dist/esm/models/mongodb/dailyBookModel.js +39 -4
- package/dist/esm/models/mongodb/dashboardManagementModel.js +46 -11
- package/dist/esm/models/mongodb/eventModel.js +58 -20
- package/dist/esm/models/mongodb/examGroupModel.js +69 -31
- package/dist/esm/models/mongodb/examHasAnswerSheetModel.js +56 -18
- package/dist/esm/models/mongodb/examModel.js +76 -38
- package/dist/esm/models/mongodb/feeReminderTypeModel.js +42 -7
- package/dist/esm/models/mongodb/feedBackModel.js +43 -8
- package/dist/esm/models/mongodb/generateIdCardModel.js +39 -4
- package/dist/esm/models/mongodb/holidayModel.js +58 -20
- package/dist/esm/models/mongodb/index.js +16 -11
- package/dist/esm/models/mongodb/informationSupportModel.js +42 -7
- package/dist/esm/models/mongodb/inquiryModel.js +67 -29
- package/dist/esm/models/mongodb/invoiceModel.js +48 -13
- package/dist/esm/models/mongodb/jobApplyModel.js +49 -14
- package/dist/esm/models/mongodb/photosGalleryModel.js +46 -11
- package/dist/esm/models/mongodb/plannerModel.js +45 -10
- package/dist/esm/models/mongodb/plugin/addDefaultAttributesPlugin.js +4 -1
- package/dist/esm/models/mongodb/plugin/transformIdInQueryPlugin.js +3 -1
- package/dist/esm/models/mongodb/plugin/transformIdInResponsePlugin.js +8 -3
- package/dist/esm/models/mongodb/replaceTeacherModel.js +46 -11
- package/dist/esm/models/mongodb/schoolFeeModel.js +56 -18
- package/dist/esm/models/mongodb/subjectIndexModel.js +145 -107
- package/dist/esm/models/mongodb/subscriptionPlanModel.js +47 -12
- package/dist/esm/models/mongodb/taskManagementModel.js +56 -18
- package/dist/esm/models/mongodb/uniqueNumberCounterModel.js +42 -7
- package/dist/esm/models/mongodb/userDetailsModel.js +68 -32
- package/dist/esm/models/mongodb/userDoc.js +6 -3
- package/dist/esm/models/mongodb/userInstituteMetaModel.js +54 -19
- package/dist/esm/models/mongodb/userSchoolMetaModel.js +46 -41
- package/dist/esm/models/mongodb/videoAnalystModel.js +40 -5
- package/dist/esm/models/mongodb/walletTransactionModel.js +56 -21
- package/dist/esm/models/psql/SubCategoriesModel.js +28 -23
- package/dist/esm/models/psql/academicCalendarModel.js +26 -21
- package/dist/esm/models/psql/accountHasReceiptDetailsModel.js +38 -33
- package/dist/esm/models/psql/announcementModel.js +58 -53
- package/dist/esm/models/psql/areaModel.js +17 -12
- package/dist/esm/models/psql/bankAccountDetailsModel.js +35 -30
- package/dist/esm/models/psql/bannerModel.js +40 -35
- package/dist/esm/models/psql/batchModel.js +53 -48
- package/dist/esm/models/psql/batchSubjectBookAssessmentModel.js +35 -30
- package/dist/esm/models/psql/batchSubjectProjectAssessmentModel.js +35 -30
- package/dist/esm/models/psql/bookAssessmentDateModel.js +25 -20
- package/dist/esm/models/psql/categoriesModel.js +24 -19
- package/dist/esm/models/psql/cityModel.js +21 -16
- package/dist/esm/models/psql/classRoomModel.js +36 -31
- package/dist/esm/models/psql/cloudStorageModel.js +30 -25
- package/dist/esm/models/psql/coinPurchaseOfferModel.js +31 -26
- package/dist/esm/models/psql/contactFeedBackModel.js +34 -29
- package/dist/esm/models/psql/countryModel.js +13 -11
- package/dist/esm/models/psql/courseHasVisitorsModel.js +22 -17
- package/dist/esm/models/psql/courseModel.js +41 -36
- package/dist/esm/models/psql/driverModel.js +51 -46
- package/dist/esm/models/psql/entityGroupModel.js +29 -24
- package/dist/esm/models/psql/facilityModel.js +34 -29
- package/dist/esm/models/psql/featureActionModel.js +28 -23
- package/dist/esm/models/psql/feeHistoryDetailsModel.js +45 -40
- package/dist/esm/models/psql/feeHistoryModel.js +78 -73
- package/dist/esm/models/psql/feeReminderModel.js +63 -58
- package/dist/esm/models/psql/feeReminderSettingModel.js +27 -22
- package/dist/esm/models/psql/feeTypeHasTermsModel.js +31 -26
- package/dist/esm/models/psql/feeTypeModel.js +42 -37
- package/dist/esm/models/psql/feesCollectionModel.js +55 -50
- package/dist/esm/models/psql/fileStorageModel.js +26 -21
- package/dist/esm/models/psql/floorManagementModel.js +25 -20
- package/dist/esm/models/psql/greetingsModel.js +34 -29
- package/dist/esm/models/psql/homeWorkModel.js +36 -31
- package/dist/esm/models/psql/index.js +15 -7
- package/dist/esm/models/psql/instituteEntityModel.js +34 -29
- package/dist/esm/models/psql/instituteEntityTypeModel.js +25 -20
- package/dist/esm/models/psql/instituteModel.js +70 -65
- package/dist/esm/models/psql/instituteSubscriptionPlanModel.js +42 -37
- package/dist/esm/models/psql/inventoryHistoryModel.js +42 -37
- package/dist/esm/models/psql/inventoryModel.js +36 -31
- package/dist/esm/models/psql/lectureHistoryModel.js +62 -57
- package/dist/esm/models/psql/lectureModel.js +111 -106
- package/dist/esm/models/psql/masterLeaveModel.js +41 -36
- package/dist/esm/models/psql/moduleFeatureModel.js +29 -24
- package/dist/esm/models/psql/moduleModel.js +30 -25
- package/dist/esm/models/psql/offerModel.js +39 -34
- package/dist/esm/models/psql/paymentTermsModel.js +35 -30
- package/dist/esm/models/psql/pdcChequeModel.js +40 -35
- package/dist/esm/models/psql/pdcHistoryModel.js +44 -39
- package/dist/esm/models/psql/pincodeModel.js +28 -23
- package/dist/esm/models/psql/productModel.js +32 -27
- package/dist/esm/models/psql/projectAssessmentOptionModel.js +23 -18
- package/dist/esm/models/psql/roleModel.js +26 -21
- package/dist/esm/models/psql/rulesRegulationModel.js +23 -18
- package/dist/esm/models/psql/schoolFeeCollectionModel.js +34 -29
- package/dist/esm/models/psql/schoolOfferModel.js +43 -38
- package/dist/esm/models/psql/sendNotificationModel.js +32 -27
- package/dist/esm/models/psql/slotModel.js +27 -22
- package/dist/esm/models/psql/stateModel.js +18 -13
- package/dist/esm/models/psql/subjectHasFeeModel.js +25 -20
- package/dist/esm/models/psql/subjectHasPayFeeHistoryModel.js +32 -27
- package/dist/esm/models/psql/syllabusModel.js +31 -26
- package/dist/esm/models/psql/testimonialModel.js +52 -47
- package/dist/esm/models/psql/toDoModel.js +35 -30
- package/dist/esm/models/psql/tokenModel.js +12 -10
- package/dist/esm/models/psql/tripModel.js +34 -29
- package/dist/esm/models/psql/typeManagementModel.js +32 -27
- package/dist/esm/models/psql/userBookAssessmentModel.js +34 -29
- package/dist/esm/models/psql/userFeeTypeByAccountModel.js +41 -36
- package/dist/esm/models/psql/userFeeTypeModel.js +44 -39
- package/dist/esm/models/psql/userHasAnnouncementModel.js +31 -26
- package/dist/esm/models/psql/userHasBatchModel.js +24 -19
- package/dist/esm/models/psql/userHasCourseModel.js +35 -30
- package/dist/esm/models/psql/userHasDeviceModel.js +26 -21
- package/dist/esm/models/psql/userHasFeeTermsModel.js +45 -40
- package/dist/esm/models/psql/userHasFileModel.js +29 -24
- package/dist/esm/models/psql/userHasHomeWorkModel.js +36 -31
- package/dist/esm/models/psql/userHasInventoryHistoryModel.js +41 -36
- package/dist/esm/models/psql/userHasInventoryModel.js +45 -40
- package/dist/esm/models/psql/userHasLeaveHistoryModel.js +41 -36
- package/dist/esm/models/psql/userHasLeaveModel.js +34 -29
- package/dist/esm/models/psql/userHasOfferModel.js +36 -31
- package/dist/esm/models/psql/userHasParentModel.js +31 -26
- package/dist/esm/models/psql/userHasRoleModel.js +27 -22
- package/dist/esm/models/psql/userHasRollNumberModel.js +28 -23
- package/dist/esm/models/psql/userHasStorageModel.js +27 -22
- package/dist/esm/models/psql/userHasSubjectFeeModel.js +27 -22
- package/dist/esm/models/psql/userLeaveRequestModel.js +43 -38
- package/dist/esm/models/psql/userModel.js +92 -87
- package/dist/esm/models/psql/userPayoutDetailsModel.js +41 -36
- package/dist/esm/models/psql/userPayoutHistoryModel.js +40 -35
- package/dist/esm/models/psql/userPayoutModel.js +63 -58
- package/dist/esm/models/psql/userProjectAssessmentOptionModel.js +31 -26
- package/dist/esm/models/psql/userRequiredStepsModel.js +22 -17
- package/dist/esm/models/psql/vehicleModel.js +30 -25
- package/dist/esm/models/psql/vendorManagementModel.js +44 -39
- package/dist/esm/models/psql/walletHistoryModel.js +34 -28
- package/dist/esm/models/psql/walletModel.js +25 -20
- package/dist/esm/models/psql/workingDayModel.js +24 -19
- package/dist/esm/models/psql/workingShiftModel.js +34 -29
- package/dist/esm/services/Concrete/mongooseCommonService.js +9 -5
- package/dist/esm/services/Concrete/sequelizeCommonService.js +9 -6
- package/dist/esm/services/Contracts/IMongooseCommonService.js +2 -1
- package/dist/esm/services/Contracts/ISequelizeCommonService.js +2 -1
- package/dist/esm/types/academicCalendarType.js +2 -1
- package/dist/esm/types/accountHasReceiptDetailsType.js +2 -1
- package/dist/esm/types/announcementType.js +2 -1
- package/dist/esm/types/approveRequestType.js +2 -1
- package/dist/esm/types/areaType.js +2 -1
- package/dist/esm/types/attendanceType.js +2 -1
- package/dist/esm/types/bankAccountDetailsType.js +2 -1
- package/dist/esm/types/bannerType.js +2 -1
- package/dist/esm/types/batchSubjectBookAssessmentType.js +2 -1
- package/dist/esm/types/batchSubjectProjectAssessmentType.js +2 -1
- package/dist/esm/types/batchType.js +2 -1
- package/dist/esm/types/blogType.js +2 -1
- package/dist/esm/types/bookAssessmentDateType.js +2 -1
- package/dist/esm/types/careerType.js +2 -1
- package/dist/esm/types/categoriesType.js +2 -1
- package/dist/esm/types/certificatesHistoryType.js +2 -1
- package/dist/esm/types/certificatesManagementType.js +2 -1
- package/dist/esm/types/classRoomType.js +2 -1
- package/dist/esm/types/cloudStorageType.js +2 -1
- package/dist/esm/types/coinPurchaseOfferType.js +2 -1
- package/dist/esm/types/commonType.js +2 -1
- package/dist/esm/types/contactFeedBackType.js +2 -1
- package/dist/esm/types/courseHasVisitorsType.js +2 -1
- package/dist/esm/types/courseType.js +2 -1
- package/dist/esm/types/dailyBookType.js +2 -1
- package/dist/esm/types/dashboardManagementType.js +2 -1
- package/dist/esm/types/driverType.js +2 -1
- package/dist/esm/types/entityGroupType.js +2 -1
- package/dist/esm/types/eventType.js +2 -1
- package/dist/esm/types/examGroupType.js +2 -1
- package/dist/esm/types/examHasAnswerSheetType.js +2 -1
- package/dist/esm/types/examType.js +2 -1
- package/dist/esm/types/facilityType.js +2 -1
- package/dist/esm/types/featureActionType.js +2 -1
- package/dist/esm/types/feeHistoryDetailsType.js +2 -1
- package/dist/esm/types/feeHistoryType.js +2 -1
- package/dist/esm/types/feeReminderSettingType.js +2 -1
- package/dist/esm/types/feeReminderType.js +2 -1
- package/dist/esm/types/feeReminderTypeType.js +2 -1
- package/dist/esm/types/feeTypeHasTermsType.js +2 -1
- package/dist/esm/types/feeTypeType.js +2 -1
- package/dist/esm/types/feedBackType.js +2 -1
- package/dist/esm/types/feesCollectionType.js +2 -1
- package/dist/esm/types/fileStorageType.js +2 -1
- package/dist/esm/types/floormanagementType.js +2 -1
- package/dist/esm/types/generateIdCardType.js +2 -1
- package/dist/esm/types/greetingsType.js +2 -1
- package/dist/esm/types/holidayType.js +2 -1
- package/dist/esm/types/homeWorkType.js +2 -1
- package/dist/esm/types/informationSupportType.js +2 -1
- package/dist/esm/types/inquiryType.js +2 -1
- package/dist/esm/types/instituteEntityType.js +2 -1
- package/dist/esm/types/instituteEntityTypeType.js +2 -1
- package/dist/esm/types/instituteSubscriptionPlanType.js +2 -1
- package/dist/esm/types/instituteType.js +2 -1
- package/dist/esm/types/inventoryHistoryType.js +2 -1
- package/dist/esm/types/inventoryType.js +2 -1
- package/dist/esm/types/jobApply.js +2 -1
- package/dist/esm/types/lectureHistoryType.js +2 -1
- package/dist/esm/types/lectureType.js +2 -1
- package/dist/esm/types/masterLeaveType.js +2 -1
- package/dist/esm/types/moduleFeatureType.js +2 -1
- package/dist/esm/types/moduleType.js +2 -1
- package/dist/esm/types/offerType.js +2 -1
- package/dist/esm/types/paymentTermsType.js +2 -1
- package/dist/esm/types/pdcChequeType.js +2 -1
- package/dist/esm/types/pdcHistoryType.js +2 -1
- package/dist/esm/types/photosGalleryType.js +2 -1
- package/dist/esm/types/plannerType.js +2 -1
- package/dist/esm/types/productType.js +2 -1
- package/dist/esm/types/projectAssessmentOptionType.js +2 -1
- package/dist/esm/types/roleType.js +2 -1
- package/dist/esm/types/rulesRegulationType.js +2 -1
- package/dist/esm/types/schoolFeeCollectionType.js +2 -1
- package/dist/esm/types/schoolFeeType.js +2 -1
- package/dist/esm/types/schoolOfferType.js +2 -1
- package/dist/esm/types/sendNotificationType.js +2 -1
- package/dist/esm/types/slotType.js +2 -1
- package/dist/esm/types/subCategoryType.js +2 -1
- package/dist/esm/types/subjectHasFeeType.js +2 -1
- package/dist/esm/types/subjectHasPayFeeHistoryType.js +2 -1
- package/dist/esm/types/subjectIndexType.js +2 -1
- package/dist/esm/types/subscriptionPlanType.js +2 -1
- package/dist/esm/types/syllabusType.js +2 -1
- package/dist/esm/types/taskManagementType.js +2 -1
- package/dist/esm/types/testimonialType.js +2 -1
- package/dist/esm/types/toDoType.js +2 -1
- package/dist/esm/types/tripType.js +2 -1
- package/dist/esm/types/typeManagementType.js +2 -1
- package/dist/esm/types/uniqueNumberCounterType.js +2 -1
- package/dist/esm/types/userBookAssessmentType.js +2 -1
- package/dist/esm/types/userDetailsType.js +2 -1
- package/dist/esm/types/userFeeTypeByAccountType.js +2 -1
- package/dist/esm/types/userFeeTypeType.js +2 -1
- package/dist/esm/types/userHasAnnouncementType.js +2 -1
- package/dist/esm/types/userHasBatchType.js +2 -1
- package/dist/esm/types/userHasCourseType.js +2 -1
- package/dist/esm/types/userHasDeviceType.js +2 -1
- package/dist/esm/types/userHasFeeTermsType.js +2 -1
- package/dist/esm/types/userHasFileType.js +2 -1
- package/dist/esm/types/userHasHomeWorkType.js +2 -1
- package/dist/esm/types/userHasInventoryHistoryType.js +2 -1
- package/dist/esm/types/userHasInventoryType.js +2 -1
- package/dist/esm/types/userHasLeaveHistoryType.js +2 -1
- package/dist/esm/types/userHasLeaveType.js +2 -1
- package/dist/esm/types/userHasOffer.js +2 -1
- package/dist/esm/types/userHasParentType.js +2 -1
- package/dist/esm/types/userHasRoleType.js +2 -1
- package/dist/esm/types/userHasRollNumberType.js +2 -1
- package/dist/esm/types/userHasStorageType.js +2 -1
- package/dist/esm/types/userHasSubjectFeeType.js +2 -1
- package/dist/esm/types/userInstituteMetaType.js +2 -1
- package/dist/esm/types/userLeaveRequestType.js +2 -1
- package/dist/esm/types/userMetaType.js +2 -1
- package/dist/esm/types/userPayoutDetailsType.js +2 -1
- package/dist/esm/types/userPayoutHistoryType.js +2 -1
- package/dist/esm/types/userPayoutType.js +2 -1
- package/dist/esm/types/userProjectAssessmentOptionType.js +2 -1
- package/dist/esm/types/userRequiredStepsType.js +2 -1
- package/dist/esm/types/userSchoolMetaType.js +2 -1
- package/dist/esm/types/userType.js +2 -1
- package/dist/esm/types/vehicleType.js +2 -1
- package/dist/esm/types/vendorType.js +2 -1
- package/dist/esm/types/videoAnalystType.js +2 -1
- package/dist/esm/types/walletHistoryType.js +2 -1
- package/dist/esm/types/walletTransactionType.js +2 -1
- package/dist/esm/types/walletType.js +2 -1
- package/dist/esm/types/workingDayType.js +2 -1
- package/dist/esm/types/workingShiftType.js +2 -1
- package/package.json +3 -3
|
@@ -1,41 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getPresignedUrl = exports.uploadFileToS3 = void 0;
|
|
1
7
|
// src/utils/s3Uploader.ts
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const aws_js_1 = require("../configs/aws.js");
|
|
11
|
+
const env_js_1 = require("../configs/env.js");
|
|
12
|
+
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
13
|
+
const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
|
|
14
|
+
const uploadFileToS3 = async (localFilePath, s3Key, s3Bucket = env_js_1.ENV_VARIABLE.AWS_BUCKET_NAME) => {
|
|
9
15
|
try {
|
|
10
|
-
const fileContent =
|
|
11
|
-
const contentType = getMimeTypeFromExt(
|
|
12
|
-
const command = new PutObjectCommand({
|
|
16
|
+
const fileContent = fs_1.default.readFileSync(localFilePath);
|
|
17
|
+
const contentType = getMimeTypeFromExt(path_1.default.extname(localFilePath));
|
|
18
|
+
const command = new client_s3_1.PutObjectCommand({
|
|
13
19
|
Bucket: s3Bucket,
|
|
14
20
|
Key: s3Key,
|
|
15
21
|
Body: fileContent,
|
|
16
22
|
ContentType: contentType,
|
|
17
23
|
// ACL: 'public-read', // ✅ For public access
|
|
18
24
|
});
|
|
19
|
-
await s3.send(command);
|
|
25
|
+
await aws_js_1.s3.send(command);
|
|
20
26
|
// Delete local file after successful upload
|
|
21
|
-
|
|
22
|
-
const filePath = `https://${s3Bucket}.s3.${ENV_VARIABLE.AWS_REGION}.amazonaws.com/${s3Key}`;
|
|
27
|
+
fs_1.default.unlinkSync(localFilePath);
|
|
28
|
+
const filePath = `https://${s3Bucket}.s3.${env_js_1.ENV_VARIABLE.AWS_REGION}.amazonaws.com/${s3Key}`;
|
|
23
29
|
return filePath;
|
|
24
30
|
}
|
|
25
31
|
catch (err) {
|
|
26
|
-
|
|
32
|
+
fs_1.default.unlinkSync(localFilePath);
|
|
27
33
|
throw err;
|
|
28
34
|
}
|
|
29
35
|
};
|
|
30
|
-
|
|
36
|
+
exports.uploadFileToS3 = uploadFileToS3;
|
|
37
|
+
const getPresignedUrl = async (bucket, fileStorage, expiresIn = 60 * 60 * 24) => {
|
|
31
38
|
const s3Key = `${fileStorage.storagePath}/${fileStorage.storageFileName}`;
|
|
32
|
-
const command = new GetObjectCommand({
|
|
39
|
+
const command = new client_s3_1.GetObjectCommand({
|
|
33
40
|
Bucket: bucket,
|
|
34
41
|
Key: s3Key,
|
|
35
42
|
});
|
|
36
|
-
const signedUrl = await getSignedUrl(s3, command, { expiresIn }); // in seconds
|
|
43
|
+
const signedUrl = await (0, s3_request_presigner_1.getSignedUrl)(aws_js_1.s3, command, { expiresIn }); // in seconds
|
|
37
44
|
return signedUrl;
|
|
38
45
|
};
|
|
46
|
+
exports.getPresignedUrl = getPresignedUrl;
|
|
39
47
|
const getMimeTypeFromExt = (ext) => {
|
|
40
48
|
switch (ext.toLowerCase()) {
|
|
41
49
|
case '.jpg':
|
|
@@ -1,14 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.getNextLetter = exports.getCityAreas = exports.generateVoucherCode = exports.verifyHmacSHA256 = exports.generateHmacSHA256 = exports.customPagination = exports.uuidIdAlternatives = exports.objectIdAlternatives = exports.enumAlternatives = exports.fromSnakeCaseToNormalText = exports.normalizeToArray = exports.capitalizeFirst = exports.parseOrderOptions = exports.isValidUUID = exports.removeFalsyValues = exports.flattenNestedStructure = exports.buildNestedStructure = exports.getParentsByChildrenId = exports.getChildrenByParentId = exports.sortArray = exports.groupByFields = exports.endOfDay = exports.generateUuidToNumber = exports.startOfDay = exports.isDateWithinRange = exports.isTimeWithinRange = exports.keyByFieldOrFields = exports.getUniqueArrayByFields = exports.generateTempPassword = exports.generateAlphaNumericCode = exports.generateOtp = exports.ensureDirectoryExists = exports.omit = exports.isValidMongoDbId = exports.pick = void 0;
|
|
40
|
+
exports.groupByFieldOrFields = groupByFieldOrFields;
|
|
41
|
+
exports.slugify = slugify;
|
|
42
|
+
exports.assignNonNull = assignNonNull;
|
|
43
|
+
exports.isUserSchoolInfoUpdate = isUserSchoolInfoUpdate;
|
|
44
|
+
exports.chunkArray = chunkArray;
|
|
45
|
+
exports.extractFromObject = extractFromObject;
|
|
1
46
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
47
|
+
const fs_1 = __importDefault(require("fs"));
|
|
48
|
+
const dateFunction = __importStar(require("date-fns"));
|
|
49
|
+
const app_js_1 = require("../constants/app.js");
|
|
50
|
+
const joi_1 = __importDefault(require("joi"));
|
|
6
51
|
const uuid = require('uuid');
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
52
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
53
|
+
const sequelize_1 = require("sequelize");
|
|
54
|
+
const axios_1 = __importDefault(require("axios"));
|
|
10
55
|
const PASSWORD_REGEX = new RegExp('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!.@#$%^&*])(?=.{8,})');
|
|
11
|
-
|
|
56
|
+
const pick = (objOrArray, keys) => {
|
|
12
57
|
const pickObject = (obj) => keys.reduce((acc, key) => {
|
|
13
58
|
if (key in obj) {
|
|
14
59
|
acc[key] = obj[key];
|
|
@@ -22,13 +67,14 @@ export const pick = (objOrArray, keys) => {
|
|
|
22
67
|
// Otherwise, it's a single object
|
|
23
68
|
return pickObject(objOrArray);
|
|
24
69
|
};
|
|
25
|
-
|
|
70
|
+
exports.pick = pick;
|
|
71
|
+
exports.isValidMongoDbId = joi_1.default.string()
|
|
26
72
|
.trim()
|
|
27
73
|
.pattern(/^[0-9a-fA-F]{24}$/)
|
|
28
74
|
.messages({
|
|
29
75
|
'string.pattern.base': `"id" must be a valid MongoDB ObjectId`,
|
|
30
76
|
});
|
|
31
|
-
|
|
77
|
+
const omit = (objOrArray, keys) => {
|
|
32
78
|
const omitObject = (obj) => Object.keys(obj).reduce((acc, key) => {
|
|
33
79
|
// Check if the key is not in the list of keys to omit
|
|
34
80
|
if (!keys.includes(key)) {
|
|
@@ -44,12 +90,14 @@ export const omit = (objOrArray, keys) => {
|
|
|
44
90
|
// Otherwise, it's a single object
|
|
45
91
|
return omitObject(objOrArray);
|
|
46
92
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
93
|
+
exports.omit = omit;
|
|
94
|
+
const ensureDirectoryExists = (directory) => {
|
|
95
|
+
if (!fs_1.default.existsSync(directory)) {
|
|
96
|
+
fs_1.default.mkdirSync(directory, { recursive: true });
|
|
50
97
|
}
|
|
51
98
|
};
|
|
52
|
-
|
|
99
|
+
exports.ensureDirectoryExists = ensureDirectoryExists;
|
|
100
|
+
const generateOtp = (length = 6) => {
|
|
53
101
|
const digits = '0123456789';
|
|
54
102
|
let otp = '';
|
|
55
103
|
for (let i = 0; i < length; i++) {
|
|
@@ -57,7 +105,8 @@ export const generateOtp = (length = 6) => {
|
|
|
57
105
|
}
|
|
58
106
|
return otp;
|
|
59
107
|
};
|
|
60
|
-
|
|
108
|
+
exports.generateOtp = generateOtp;
|
|
109
|
+
const generateAlphaNumericCode = (length = 8) => {
|
|
61
110
|
const chars = {
|
|
62
111
|
lowercase: 'abcdefghijklmnopqrstuvwxyz',
|
|
63
112
|
uppercase: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
|
|
@@ -79,7 +128,8 @@ export const generateAlphaNumericCode = (length = 8) => {
|
|
|
79
128
|
const tempPassword = password.join('');
|
|
80
129
|
return tempPassword;
|
|
81
130
|
};
|
|
82
|
-
|
|
131
|
+
exports.generateAlphaNumericCode = generateAlphaNumericCode;
|
|
132
|
+
const generateTempPassword = (length = 8) => {
|
|
83
133
|
const chars = {
|
|
84
134
|
lowercase: 'abcdefghijklmnopqrstuvwxyz',
|
|
85
135
|
uppercase: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
|
|
@@ -102,9 +152,10 @@ export const generateTempPassword = (length = 8) => {
|
|
|
102
152
|
password = password.sort(() => 0.5 - Math.random());
|
|
103
153
|
const tempPassword = password.join('');
|
|
104
154
|
// Verify if the password meets the regex requirement
|
|
105
|
-
return PASSWORD_REGEX.test(tempPassword) ? tempPassword : generateTempPassword();
|
|
155
|
+
return PASSWORD_REGEX.test(tempPassword) ? tempPassword : (0, exports.generateTempPassword)();
|
|
106
156
|
};
|
|
107
|
-
|
|
157
|
+
exports.generateTempPassword = generateTempPassword;
|
|
158
|
+
const getUniqueArrayByFields = (array, fields) => {
|
|
108
159
|
const uniqueMap = new Map();
|
|
109
160
|
array.forEach(item => {
|
|
110
161
|
const key = fields.map(field => item[field]).join('-');
|
|
@@ -114,7 +165,8 @@ export const getUniqueArrayByFields = (array, fields) => {
|
|
|
114
165
|
});
|
|
115
166
|
return Array.from(uniqueMap.values());
|
|
116
167
|
};
|
|
117
|
-
|
|
168
|
+
exports.getUniqueArrayByFields = getUniqueArrayByFields;
|
|
169
|
+
const keyByFieldOrFields = (array, fields) => {
|
|
118
170
|
return array.reduce((result, item) => {
|
|
119
171
|
const key = Array.isArray(fields)
|
|
120
172
|
? fields.map(field => item[field]).join('-') // Composite key for multiple fields
|
|
@@ -123,6 +175,7 @@ export const keyByFieldOrFields = (array, fields) => {
|
|
|
123
175
|
return result;
|
|
124
176
|
}, {});
|
|
125
177
|
};
|
|
178
|
+
exports.keyByFieldOrFields = keyByFieldOrFields;
|
|
126
179
|
/**
|
|
127
180
|
* Groups an array of objects by a specified field or multiple fields.
|
|
128
181
|
*
|
|
@@ -130,7 +183,7 @@ export const keyByFieldOrFields = (array, fields) => {
|
|
|
130
183
|
* @param fields - A single field or an array of fields to group by.
|
|
131
184
|
* @returns An object where keys are the grouped field values and values are arrays of grouped objects.
|
|
132
185
|
*/
|
|
133
|
-
|
|
186
|
+
function groupByFieldOrFields(array, fields) {
|
|
134
187
|
return array.reduce((result, item) => {
|
|
135
188
|
const key = Array.isArray(fields)
|
|
136
189
|
? fields.map(field => item[field]).join('-') // Composite key for multiple fields
|
|
@@ -143,7 +196,7 @@ export function groupByFieldOrFields(array, fields) {
|
|
|
143
196
|
return result;
|
|
144
197
|
}, {});
|
|
145
198
|
}
|
|
146
|
-
|
|
199
|
+
const isTimeWithinRange = (time, rangeStart, rangeEnd) => {
|
|
147
200
|
const getTimeMs = (date) => date.getUTCHours() * 3600000 + date.getUTCMinutes() * 60000 + date.getUTCSeconds() * 1000 + date.getUTCMilliseconds();
|
|
148
201
|
const timeMs = getTimeMs(time);
|
|
149
202
|
const startMs = getTimeMs(rangeStart);
|
|
@@ -155,6 +208,7 @@ export const isTimeWithinRange = (time, rangeStart, rangeEnd) => {
|
|
|
155
208
|
// If the time range crosses midnight
|
|
156
209
|
return timeMs >= startMs || timeMs <= endMs;
|
|
157
210
|
};
|
|
211
|
+
exports.isTimeWithinRange = isTimeWithinRange;
|
|
158
212
|
// export const isTimeWithinRange = (time: string | Date, rangeStart: string | Date, rangeEnd: string | Date): boolean => {
|
|
159
213
|
// const extractTime = (isoString: string) => {
|
|
160
214
|
// const date = parseISO(new Date(isoString).toISOString());
|
|
@@ -165,28 +219,32 @@ export const isTimeWithinRange = (time, rangeStart, rangeEnd) => {
|
|
|
165
219
|
// const endSeconds = extractTime(rangeEnd as string);
|
|
166
220
|
// return timeSeconds >= startSeconds && timeSeconds <= endSeconds;
|
|
167
221
|
// };
|
|
168
|
-
|
|
222
|
+
const isDateWithinRange = (date, rangeStart, rangeEnd) => {
|
|
169
223
|
const dateValue = new Date(date).getTime();
|
|
170
224
|
const startValue = new Date(rangeStart).getTime();
|
|
171
225
|
const endValue = new Date(rangeEnd).getTime();
|
|
172
226
|
return dateValue >= startValue && dateValue <= endValue;
|
|
173
227
|
};
|
|
174
|
-
|
|
228
|
+
exports.isDateWithinRange = isDateWithinRange;
|
|
229
|
+
const startOfDay = (date) => {
|
|
175
230
|
return dateFunction.startOfDay(dateFunction.parseISO(new Date(date).toISOString()));
|
|
176
231
|
};
|
|
177
|
-
|
|
232
|
+
exports.startOfDay = startOfDay;
|
|
233
|
+
const generateUuidToNumber = (uuid1) => {
|
|
178
234
|
if (!uuid1)
|
|
179
|
-
uuid1 =
|
|
235
|
+
uuid1 = crypto_1.default.randomUUID();
|
|
180
236
|
// Remove dashes from the UUID
|
|
181
237
|
let numericId = uuid1.replace(/-/g, '');
|
|
182
238
|
// Convert hex characters to numbers (keeping only digits)
|
|
183
239
|
numericId = BigInt('0x' + numericId).toString();
|
|
184
240
|
return numericId;
|
|
185
241
|
};
|
|
186
|
-
|
|
242
|
+
exports.generateUuidToNumber = generateUuidToNumber;
|
|
243
|
+
const endOfDay = (date) => {
|
|
187
244
|
return dateFunction.endOfDay(dateFunction.parseISO(new Date(date).toISOString()));
|
|
188
245
|
};
|
|
189
|
-
|
|
246
|
+
exports.endOfDay = endOfDay;
|
|
247
|
+
const groupByFields = (array, fields) => {
|
|
190
248
|
const groupedObject = {};
|
|
191
249
|
array.forEach(item => {
|
|
192
250
|
// Normalize `fields` to always be an array
|
|
@@ -202,6 +260,7 @@ export const groupByFields = (array, fields) => {
|
|
|
202
260
|
});
|
|
203
261
|
return groupedObject;
|
|
204
262
|
};
|
|
263
|
+
exports.groupByFields = groupByFields;
|
|
205
264
|
/**
|
|
206
265
|
* Sorts an array of objects based on specified fields and order.
|
|
207
266
|
*
|
|
@@ -209,7 +268,7 @@ export const groupByFields = (array, fields) => {
|
|
|
209
268
|
* @param fields - A single sort field or an array of sort fields.
|
|
210
269
|
* @returns A new sorted array.
|
|
211
270
|
*/
|
|
212
|
-
|
|
271
|
+
const sortArray = (array, fields) => {
|
|
213
272
|
const fieldArray = Array.isArray(fields) ? fields : [fields]; // Normalize to an array
|
|
214
273
|
return [...array].sort((a, b) => {
|
|
215
274
|
for (const { key, order = 'asc' } of fieldArray) {
|
|
@@ -230,6 +289,7 @@ export const sortArray = (array, fields) => {
|
|
|
230
289
|
return 0; // All fields are equal
|
|
231
290
|
});
|
|
232
291
|
};
|
|
292
|
+
exports.sortArray = sortArray;
|
|
233
293
|
/**
|
|
234
294
|
* Gets all nested children for a given parent ID.
|
|
235
295
|
*
|
|
@@ -238,7 +298,7 @@ export const sortArray = (array, fields) => {
|
|
|
238
298
|
* @param parentIdKey - The key used to reference the parent ID.
|
|
239
299
|
* @returns A flattened list of all children.
|
|
240
300
|
*/
|
|
241
|
-
|
|
301
|
+
const getChildrenByParentId = (array, parentIds, parentIdKey) => {
|
|
242
302
|
const parentIdList = Array.isArray(parentIds) ? parentIds : [parentIds]; // Normalize parentIds to an array
|
|
243
303
|
const result = array.filter(one => parentIds.includes(one.id));
|
|
244
304
|
//all id list that are included in result array
|
|
@@ -262,6 +322,7 @@ export const getChildrenByParentId = (array, parentIds, parentIdKey) => {
|
|
|
262
322
|
collectChildren(parentIdList); // Start collecting from the given parent IDs
|
|
263
323
|
return result;
|
|
264
324
|
};
|
|
325
|
+
exports.getChildrenByParentId = getChildrenByParentId;
|
|
265
326
|
/**
|
|
266
327
|
* Gets all nested children for a given parent ID.
|
|
267
328
|
*
|
|
@@ -270,7 +331,7 @@ export const getChildrenByParentId = (array, parentIds, parentIdKey) => {
|
|
|
270
331
|
* @param parentIdKey - The key used to reference the parent ID..
|
|
271
332
|
* @returns A flattened list of all parents.
|
|
272
333
|
*/
|
|
273
|
-
|
|
334
|
+
const getParentsByChildrenId = (array, childIds, parentIdKey) => {
|
|
274
335
|
const childIdList = Array.isArray(childIds) ? childIds : [childIds]; // Normalize childIds to an array
|
|
275
336
|
const result = [];
|
|
276
337
|
const includedIds = new Set(); // Track included IDs to avoid duplicates
|
|
@@ -295,6 +356,7 @@ export const getParentsByChildrenId = (array, childIds, parentIdKey) => {
|
|
|
295
356
|
collectParents(childIdList); // Start collecting from the provided child IDs
|
|
296
357
|
return result;
|
|
297
358
|
};
|
|
359
|
+
exports.getParentsByChildrenId = getParentsByChildrenId;
|
|
298
360
|
/**
|
|
299
361
|
* Builds a nested structure from a flat array of items based on a parent-child relationship.
|
|
300
362
|
*
|
|
@@ -304,7 +366,7 @@ export const getParentsByChildrenId = (array, childIds, parentIdKey) => {
|
|
|
304
366
|
*
|
|
305
367
|
* @returns An array of root-level items, each containing its nested children in the `nestedListKey`.
|
|
306
368
|
*/
|
|
307
|
-
|
|
369
|
+
const buildNestedStructure = (items, parentIdKey, nestedListKey) => {
|
|
308
370
|
// Clone the items to avoid modifying the original array
|
|
309
371
|
const clonedItems = JSON.parse(JSON.stringify(items));
|
|
310
372
|
const map = new Map(); // Map to associate items by their `id`
|
|
@@ -339,6 +401,7 @@ export const buildNestedStructure = (items, parentIdKey, nestedListKey) => {
|
|
|
339
401
|
}
|
|
340
402
|
return roots; // Return the root-level items, each containing its nested children
|
|
341
403
|
};
|
|
404
|
+
exports.buildNestedStructure = buildNestedStructure;
|
|
342
405
|
/**
|
|
343
406
|
* Flattens a nested structure into a flat array while preserving the parent-child relationship.
|
|
344
407
|
*
|
|
@@ -348,7 +411,7 @@ export const buildNestedStructure = (items, parentIdKey, nestedListKey) => {
|
|
|
348
411
|
*
|
|
349
412
|
* @returns A flat array of items, each containing a reference to its parent ID.
|
|
350
413
|
*/
|
|
351
|
-
|
|
414
|
+
const flattenNestedStructure = (items, parentIdKey, nestedListKey) => {
|
|
352
415
|
const flatArray = [];
|
|
353
416
|
const processItems = (items, parentId) => {
|
|
354
417
|
items.forEach(item => {
|
|
@@ -366,6 +429,7 @@ export const flattenNestedStructure = (items, parentIdKey, nestedListKey) => {
|
|
|
366
429
|
processItems(items);
|
|
367
430
|
return flatArray;
|
|
368
431
|
};
|
|
432
|
+
exports.flattenNestedStructure = flattenNestedStructure;
|
|
369
433
|
/**
|
|
370
434
|
* Removes all falsy values from an object.
|
|
371
435
|
*
|
|
@@ -400,24 +464,26 @@ export const flattenNestedStructure = (items, parentIdKey, nestedListKey) => {
|
|
|
400
464
|
* console.log(cleanedData);
|
|
401
465
|
* // Output: { name: 'Alice', age: 25, country: 'USA' }
|
|
402
466
|
*/
|
|
403
|
-
|
|
467
|
+
const removeFalsyValues = (obj) => {
|
|
404
468
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
405
469
|
return Object.fromEntries(Object.entries(obj).filter(([_, value]) => Boolean(value)));
|
|
406
470
|
};
|
|
407
|
-
|
|
471
|
+
exports.removeFalsyValues = removeFalsyValues;
|
|
472
|
+
const isValidUUID = (id, expectedVersion) => {
|
|
408
473
|
if (!uuid.validate(id))
|
|
409
474
|
return false;
|
|
410
475
|
if (expectedVersion && uuid.version(id) !== expectedVersion)
|
|
411
476
|
return false;
|
|
412
477
|
return true;
|
|
413
478
|
};
|
|
479
|
+
exports.isValidUUID = isValidUUID;
|
|
414
480
|
/**
|
|
415
481
|
* Parses ordering input and returns Sequelize-compatible order array.
|
|
416
482
|
*
|
|
417
483
|
* @param inputOrder - Array like [["columnName", "ASC"], ...]
|
|
418
484
|
* @param defaultOrder - Fallback or additional default order (e.g. [['createdAt', 'DESC']])
|
|
419
485
|
*/
|
|
420
|
-
|
|
486
|
+
const parseOrderOptions = (inputOrder, defaultOrder = [['createdAt', 'DESC']]) => {
|
|
421
487
|
const order = [];
|
|
422
488
|
if (Array.isArray(inputOrder)) {
|
|
423
489
|
for (const item of inputOrder) {
|
|
@@ -427,7 +493,7 @@ export const parseOrderOptions = (inputOrder, defaultOrder = [['createdAt', 'DES
|
|
|
427
493
|
// const normalizedColumn = toSnakeCase(column);
|
|
428
494
|
// order.push([Sequelize.literal(`"${normalizedColumn}"`), direction.toUpperCase()]);
|
|
429
495
|
// order.push([Sequelize.literal(`"${column}"`), direction.toUpperCase()]);
|
|
430
|
-
order.push([Sequelize.literal(`"${column}"`), direction.toUpperCase()]);
|
|
496
|
+
order.push([sequelize_1.Sequelize.literal(`"${column}"`), direction.toUpperCase()]);
|
|
431
497
|
}
|
|
432
498
|
}
|
|
433
499
|
}
|
|
@@ -440,14 +506,17 @@ export const parseOrderOptions = (inputOrder, defaultOrder = [['createdAt', 'DES
|
|
|
440
506
|
}
|
|
441
507
|
return order;
|
|
442
508
|
};
|
|
443
|
-
|
|
444
|
-
|
|
509
|
+
exports.parseOrderOptions = parseOrderOptions;
|
|
510
|
+
const capitalizeFirst = (str) => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
|
|
511
|
+
exports.capitalizeFirst = capitalizeFirst;
|
|
512
|
+
const normalizeToArray = (value) => value ? (Array.isArray(value) ? value : [value]) : undefined;
|
|
513
|
+
exports.normalizeToArray = normalizeToArray;
|
|
445
514
|
/**
|
|
446
515
|
* Converts a snake_case string to Normal Text
|
|
447
516
|
* @param {string} input - The snake_case string
|
|
448
517
|
* @returns {string} - The converted Normal Text
|
|
449
518
|
*/
|
|
450
|
-
|
|
519
|
+
const fromSnakeCaseToNormalText = (input) => {
|
|
451
520
|
if (typeof input !== 'string')
|
|
452
521
|
return '';
|
|
453
522
|
return input
|
|
@@ -456,7 +525,8 @@ export const fromSnakeCaseToNormalText = (input) => {
|
|
|
456
525
|
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
457
526
|
.join(' ');
|
|
458
527
|
};
|
|
459
|
-
|
|
528
|
+
exports.fromSnakeCaseToNormalText = fromSnakeCaseToNormalText;
|
|
529
|
+
function slugify(text) {
|
|
460
530
|
return text
|
|
461
531
|
.toLowerCase()
|
|
462
532
|
.trim()
|
|
@@ -464,18 +534,18 @@ export function slugify(text) {
|
|
|
464
534
|
.replace(/\s+/g, '-')
|
|
465
535
|
.replace(/-+/g, '-');
|
|
466
536
|
}
|
|
467
|
-
|
|
537
|
+
function assignNonNull(target, source) {
|
|
468
538
|
Object.entries(source).forEach(([key, value]) => {
|
|
469
539
|
if (value !== null && value !== undefined) {
|
|
470
540
|
target[key] = value;
|
|
471
541
|
}
|
|
472
542
|
});
|
|
473
543
|
}
|
|
474
|
-
|
|
544
|
+
function isUserSchoolInfoUpdate(institute, reqUser) {
|
|
475
545
|
return (!!(institute.type || institute.subType) &&
|
|
476
|
-
(reqUser.isAddDetails || reqUser.type === USER_TYPES.INSTITUTE_MASTER_ADMIN || reqUser.type === USER_TYPES.INSTITUTE_ADMIN));
|
|
546
|
+
(reqUser.isAddDetails || reqUser.type === app_js_1.USER_TYPES.INSTITUTE_MASTER_ADMIN || reqUser.type === app_js_1.USER_TYPES.INSTITUTE_ADMIN));
|
|
477
547
|
}
|
|
478
|
-
|
|
548
|
+
function chunkArray(array, size) {
|
|
479
549
|
const chunks = [];
|
|
480
550
|
for (let i = 0; i < array.length; i += size) {
|
|
481
551
|
chunks.push(array.slice(i, i + size));
|
|
@@ -494,7 +564,7 @@ function getNestedValue(obj, path) {
|
|
|
494
564
|
* @param columnsConfig Array of columns with { title, field }
|
|
495
565
|
* @returns { userdata: any[], columns: string[] }
|
|
496
566
|
*/
|
|
497
|
-
|
|
567
|
+
function extractFromObject(data, config) {
|
|
498
568
|
const columns = config.columns.map(col => col.title);
|
|
499
569
|
const userdata = data.map(item => {
|
|
500
570
|
const row = {};
|
|
@@ -505,33 +575,36 @@ export function extractFromObject(data, config) {
|
|
|
505
575
|
});
|
|
506
576
|
return { tableTitle: config.tableTitle, userdata, columns };
|
|
507
577
|
}
|
|
508
|
-
|
|
509
|
-
const base =
|
|
578
|
+
const enumAlternatives = (enumObj, isRequired = false, allowArray = true) => {
|
|
579
|
+
const base = joi_1.default.string().valid(...Object.values(enumObj));
|
|
510
580
|
if (allowArray) {
|
|
511
|
-
const alt =
|
|
581
|
+
const alt = joi_1.default.alternatives().try(base, joi_1.default.array().items(base));
|
|
512
582
|
return isRequired ? alt.required() : alt.optional();
|
|
513
583
|
}
|
|
514
584
|
return isRequired ? base.required() : base.optional();
|
|
515
585
|
};
|
|
516
|
-
|
|
517
|
-
|
|
586
|
+
exports.enumAlternatives = enumAlternatives;
|
|
587
|
+
const objectIdAlternatives = (isRequired = false, allowArray = true) => {
|
|
588
|
+
const base = joi_1.default.string()
|
|
518
589
|
.pattern(/^[0-9a-fA-F]{24}$/)
|
|
519
590
|
.message('Invalid ObjectId format');
|
|
520
591
|
if (allowArray) {
|
|
521
|
-
const alt =
|
|
592
|
+
const alt = joi_1.default.alternatives().try(base, joi_1.default.array().items(base));
|
|
522
593
|
return isRequired ? alt.required() : alt.optional();
|
|
523
594
|
}
|
|
524
595
|
};
|
|
525
|
-
|
|
526
|
-
|
|
596
|
+
exports.objectIdAlternatives = objectIdAlternatives;
|
|
597
|
+
const uuidIdAlternatives = (isRequired = false, allowArray = true) => {
|
|
598
|
+
const base = joi_1.default.string().uuid().message('Invalid Uuid format');
|
|
527
599
|
if (allowArray) {
|
|
528
|
-
const alt =
|
|
600
|
+
const alt = joi_1.default.alternatives().try(base, joi_1.default.array().items(base));
|
|
529
601
|
return isRequired ? alt.required() : alt.optional();
|
|
530
602
|
}
|
|
531
603
|
};
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
604
|
+
exports.uuidIdAlternatives = uuidIdAlternatives;
|
|
605
|
+
const customPagination = async (data, page, limit, totalRecords) => {
|
|
606
|
+
page = Math.max(1, page || app_js_1.PAGINATION.PAGE);
|
|
607
|
+
limit = Math.max(1, limit || app_js_1.PAGINATION.LIMIT);
|
|
535
608
|
const startIndex = (page - 1) * limit;
|
|
536
609
|
const endIndex = page * limit;
|
|
537
610
|
const paginatedData = data.slice(startIndex, endIndex);
|
|
@@ -551,23 +624,27 @@ export const customPagination = async (data, page, limit, totalRecords) => {
|
|
|
551
624
|
};
|
|
552
625
|
return paginatedDataWithPagination;
|
|
553
626
|
};
|
|
554
|
-
|
|
555
|
-
|
|
627
|
+
exports.customPagination = customPagination;
|
|
628
|
+
const generateHmacSHA256 = (data, secret) => {
|
|
629
|
+
return crypto_1.default.createHmac('sha256', secret).update(data).digest('hex');
|
|
556
630
|
};
|
|
557
|
-
|
|
558
|
-
|
|
631
|
+
exports.generateHmacSHA256 = generateHmacSHA256;
|
|
632
|
+
const verifyHmacSHA256 = (data, secret, signature) => {
|
|
633
|
+
const generated = (0, exports.generateHmacSHA256)(data, secret);
|
|
559
634
|
return generated === signature;
|
|
560
635
|
};
|
|
561
|
-
|
|
636
|
+
exports.verifyHmacSHA256 = verifyHmacSHA256;
|
|
637
|
+
const generateVoucherCode = (format = 'XXXX-XXXX-XXXX-XXXX') => {
|
|
562
638
|
const generateSegment = (length) => {
|
|
563
|
-
return
|
|
639
|
+
return crypto_1.default.randomBytes(length).toString('hex').toUpperCase().slice(0, length);
|
|
564
640
|
};
|
|
565
641
|
return format
|
|
566
642
|
.split('-')
|
|
567
643
|
.map(part => generateSegment(part.length))
|
|
568
644
|
.join('-');
|
|
569
645
|
};
|
|
570
|
-
|
|
646
|
+
exports.generateVoucherCode = generateVoucherCode;
|
|
647
|
+
const getCityAreas = async (cityName = '') => {
|
|
571
648
|
if (!cityName)
|
|
572
649
|
throw new Error('City name is required.');
|
|
573
650
|
const query = `
|
|
@@ -584,7 +661,7 @@ export const getCityAreas = async (cityName = '') => {
|
|
|
584
661
|
`;
|
|
585
662
|
const url = 'https://overpass-api.de/api/interpreter';
|
|
586
663
|
try {
|
|
587
|
-
const response = await
|
|
664
|
+
const response = await axios_1.default.post(url, `data=${encodeURIComponent(query)}`, {
|
|
588
665
|
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
589
666
|
});
|
|
590
667
|
const elements = response.data.elements;
|
|
@@ -597,7 +674,9 @@ export const getCityAreas = async (cityName = '') => {
|
|
|
597
674
|
return [];
|
|
598
675
|
}
|
|
599
676
|
};
|
|
600
|
-
|
|
677
|
+
exports.getCityAreas = getCityAreas;
|
|
678
|
+
const getNextLetter = (current) => {
|
|
601
679
|
const code = current.charCodeAt(0);
|
|
602
680
|
return code >= 90 ? 'A' : String.fromCharCode(code + 1);
|
|
603
681
|
};
|
|
682
|
+
exports.getNextLetter = getNextLetter;
|