Updated Schedue to run once in a day

This commit is contained in:
Sharon Dcruz 2025-09-09 14:00:36 +05:30
parent 9bc89f28c3
commit 65e7c7039f

View File

@ -46,7 +46,7 @@ interface PersonalTrainerAssign {
export const checkExpiredMemberships = onSchedule(
{
schedule: "*/5 * * * *",
schedule: "0 0 * * *",
timeZone: "UTC",
region: "#{SERVICES_RGN}#",
},
@ -57,11 +57,18 @@ export const checkExpiredMemberships = onSchedule(
await updateDaysUntilExpiryForAllMemberships();
const expiredMemberships = await findExpiredMemberships();
const expiringMemberships = await findMembershipsExpiringIn10Days();
const expiredMembershipsWithoutExpiryDate = await findExpiredMembershipsWithoutExpiryDate();
if (expiredMemberships.length === 0 && expiringMemberships.length === 0 && expiredMembershipsWithoutExpiryDate.length === 0) {
logger.info("No expired, expiring, or unprocessed expired memberships found.");
const expiredMembershipsWithoutExpiryDate =
await findExpiredMembershipsWithoutExpiryDate();
if (
expiredMemberships.length === 0 &&
expiringMemberships.length === 0 &&
expiredMembershipsWithoutExpiryDate.length === 0
) {
logger.info(
"No expired, expiring, or unprocessed expired memberships found."
);
return;
}
@ -78,15 +85,29 @@ export const checkExpiredMemberships = onSchedule(
);
const updateResults = await Promise.allSettled(
expiredMembershipsWithoutExpiryDate.map((m) => updateExpiryDateForExpiredMembership(m.id, m.data))
expiredMembershipsWithoutExpiryDate.map((m) =>
updateExpiryDateForExpiredMembership(m.id, m.data)
)
);
const expiredSuccessful = expiredResults.filter(r => r.status === "fulfilled").length;
const expiredFailed = expiredResults.filter(r => r.status === "rejected").length;
const expiringSuccessful = expiringResults.filter(r => r.status === "fulfilled").length;
const expiringFailed = expiringResults.filter(r => r.status === "rejected").length;
const updateSuccessful = updateResults.filter(r => r.status === "fulfilled").length;
const updateFailed = updateResults.filter(r => r.status === "rejected").length;
const expiredSuccessful = expiredResults.filter(
(r) => r.status === "fulfilled"
).length;
const expiredFailed = expiredResults.filter(
(r) => r.status === "rejected"
).length;
const expiringSuccessful = expiringResults.filter(
(r) => r.status === "fulfilled"
).length;
const expiringFailed = expiringResults.filter(
(r) => r.status === "rejected"
).length;
const updateSuccessful = updateResults.filter(
(r) => r.status === "fulfilled"
).length;
const updateFailed = updateResults.filter(
(r) => r.status === "rejected"
).length;
logger.info(
`Completed processing. Expired - Success: ${expiredSuccessful}, Failed: ${expiredFailed}. Expiring - Success: ${expiringSuccessful}, Failed: ${expiringFailed}. Updates - Success: ${updateSuccessful}, Failed: ${updateFailed}`
@ -97,9 +118,6 @@ export const checkExpiredMemberships = onSchedule(
}
);
async function findExpiredMembershipsWithoutExpiryDate(): Promise<
Array<{ id: string; data: MembershipData }>
> {
@ -110,7 +128,10 @@ async function findExpiredMembershipsWithoutExpiryDate(): Promise<
.where("status", "==", "EXPIRED")
.get();
const membershipsWithoutExpiryDate: Array<{ id: string; data: MembershipData }> = [];
const membershipsWithoutExpiryDate: Array<{
id: string;
data: MembershipData;
}> = [];
snapshot.docs.forEach((doc) => {
const data = doc.data() as MembershipData;
@ -121,7 +142,10 @@ async function findExpiredMembershipsWithoutExpiryDate(): Promise<
return membershipsWithoutExpiryDate;
} catch (error) {
logger.error("Error finding expired memberships without expiry date:", error);
logger.error(
"Error finding expired memberships without expiry date:",
error
);
throw error;
}
}
@ -130,7 +154,10 @@ async function updateExpiryDateForExpiredMembership(
membershipData: MembershipData
): Promise<void> {
try {
if (!membershipData.subscription || !membershipData.subscription.frequency) {
if (
!membershipData.subscription ||
!membershipData.subscription.frequency
) {
logger.warn(`Skipping membership ${membershipId} - no subscription data`);
return;
}
@ -156,9 +183,14 @@ async function updateExpiryDateForExpiredMembership(
updatedAt: admin.firestore.FieldValue.serverTimestamp(),
});
logger.info(`Updated expiry date for expired membership ${membershipId}: ${expiryDate.toISOString()}`);
logger.info(
`Updated expiry date for expired membership ${membershipId}: ${expiryDate.toISOString()}`
);
} catch (error) {
logger.error(`Error updating expiry date for membership ${membershipId}:`, error);
logger.error(
`Error updating expiry date for membership ${membershipId}:`,
error
);
throw error;
}
}
@ -1034,4 +1066,4 @@ async function getGymName(gymId: string): Promise<string> {
logger.error(`Error getting gym name for gym ${gymId}:`, error);
return "Unknown Gym";
}
}
}