From 0121b31838132a2fc6a4906f113e164fde6eed5b Mon Sep 17 00:00:00 2001 From: Samuel Tariku Date: Tue, 7 Oct 2025 13:49:29 +0300 Subject: [PATCH] feat: Update cron job scheduling and user wallet creation logic; increment API version to 1.0.dev17 --- internal/web_server/cron.go | 132 +++++++++++++-------------- internal/web_server/handlers/user.go | 2 +- internal/web_server/routes.go | 2 +- 3 files changed, 68 insertions(+), 68 deletions(-) diff --git a/internal/web_server/cron.go b/internal/web_server/cron.go index a03c34b..f1caaac 100644 --- a/internal/web_server/cron.go +++ b/internal/web_server/cron.go @@ -27,75 +27,75 @@ func StartDataFetchingCrons(eventService eventsvc.Service, oddsService oddssvc.S spec string task func() }{ - // { - // spec: "0 0 * * * *", // Every 1 hour - // task: func() { - // mongoLogger.Info("Began fetching upcoming events cron task") - // if err := eventService.FetchUpcomingEvents(context.Background()); err != nil { - // mongoLogger.Error("Failed to fetch upcoming events", - // zap.Error(err), - // ) - // } else { - // mongoLogger.Info("Completed fetching upcoming events without errors") - // } - // }, - // }, - // { - // spec: "0 0 * * * *", // Every 1 hour (since its takes that long to fetch all the events) - // task: func() { - // mongoLogger.Info("Began fetching non live odds cron task") - // if err := oddsService.FetchNonLiveOdds(context.Background()); err != nil { - // mongoLogger.Error("Failed to fetch non live odds", - // zap.Error(err), - // ) - // } else { - // mongoLogger.Info("Completed fetching non live odds without errors") - // } - // }, - // }, - // { - // spec: "0 */5 * * * *", // Every 5 Minutes - // task: func() { - // mongoLogger.Info("Began update all expired events status cron task") - // if _, err := resultService.CheckAndUpdateExpiredB365Events(context.Background()); err != nil { - // mongoLogger.Error("Failed to update expired events status", - // zap.Error(err), - // ) - // } else { - // mongoLogger.Info("Completed expired events without errors") - // } - // }, - // }, - // { - // spec: "0 */15 * * * *", // Every 15 Minutes - // task: func() { - // mongoLogger.Info("Began updating bets based on event results cron task") - // if err := resultService.FetchB365ResultAndUpdateBets(context.Background()); err != nil { - // mongoLogger.Error("Failed to process result", - // zap.Error(err), - // ) - // } else { - // mongoLogger.Info("Completed processing all event result outcomes without errors") - // } - // }, - // }, - // { - // spec: "0 0 0 * * 1", // Every Monday - // task: func() { - // mongoLogger.Info("Began Send weekly result notification cron task") - // if err := resultService.CheckAndSendResultNotifications(context.Background(), time.Now().Add(-7*24*time.Hour)); err != nil { - // mongoLogger.Error("Failed to process result", - // zap.Error(err), - // ) - // } else { - // mongoLogger.Info("Completed sending weekly result notification without errors") - // } - // }, - // }, + { + spec: "0 0 * * * *", // Every 1 hour + task: func() { + mongoLogger.Info("Began fetching upcoming events cron task") + if err := eventService.FetchUpcomingEvents(context.Background()); err != nil { + mongoLogger.Error("Failed to fetch upcoming events", + zap.Error(err), + ) + } else { + mongoLogger.Info("Completed fetching upcoming events without errors") + } + }, + }, + { + spec: "0 0 * * * *", // Every 1 hour (since its takes that long to fetch all the events) + task: func() { + mongoLogger.Info("Began fetching non live odds cron task") + if err := oddsService.FetchNonLiveOdds(context.Background()); err != nil { + mongoLogger.Error("Failed to fetch non live odds", + zap.Error(err), + ) + } else { + mongoLogger.Info("Completed fetching non live odds without errors") + } + }, + }, + { + spec: "0 */5 * * * *", // Every 5 Minutes + task: func() { + mongoLogger.Info("Began update all expired events status cron task") + if _, err := resultService.CheckAndUpdateExpiredB365Events(context.Background()); err != nil { + mongoLogger.Error("Failed to update expired events status", + zap.Error(err), + ) + } else { + mongoLogger.Info("Completed expired events without errors") + } + }, + }, + { + spec: "0 */15 * * * *", // Every 15 Minutes + task: func() { + mongoLogger.Info("Began updating bets based on event results cron task") + if err := resultService.FetchB365ResultAndUpdateBets(context.Background()); err != nil { + mongoLogger.Error("Failed to process result", + zap.Error(err), + ) + } else { + mongoLogger.Info("Completed processing all event result outcomes without errors") + } + }, + }, + { + spec: "0 0 0 * * 1", // Every Monday + task: func() { + mongoLogger.Info("Began Send weekly result notification cron task") + if err := resultService.CheckAndSendResultNotifications(context.Background(), time.Now().Add(-7*24*time.Hour)); err != nil { + mongoLogger.Error("Failed to process result", + zap.Error(err), + ) + } else { + mongoLogger.Info("Completed sending weekly result notification without errors") + } + }, + }, } for _, job := range schedule { - job.task() + // job.task() if _, err := c.AddFunc(job.spec, job.task); err != nil { mongoLogger.Error("Failed to schedule data fetching cron job", zap.Error(err), diff --git a/internal/web_server/handlers/user.go b/internal/web_server/handlers/user.go index 8d36762..5103d0d 100644 --- a/internal/web_server/handlers/user.go +++ b/internal/web_server/handlers/user.go @@ -304,7 +304,7 @@ func (h *Handler) RegisterUser(c *fiber.Ctx) error { return fiber.NewError(fiber.StatusInternalServerError, "failed to register user:"+err.Error()) } - newWallet, err := h.walletSvc.CreateCustomerWallet(c.Context(), newUser.ID) + _, err = h.walletSvc.CreateCustomerWallet(c.Context(), newUser.ID) if err != nil { h.mongoLoggerSvc.Error("Failed to create wallet for user", zap.Int64("userID", newUser.ID), diff --git a/internal/web_server/routes.go b/internal/web_server/routes.go index 05aede1..df3eb90 100644 --- a/internal/web_server/routes.go +++ b/internal/web_server/routes.go @@ -61,7 +61,7 @@ func (a *App) initAppRoutes() { a.fiber.Get("/", func(c *fiber.Ctx) error { return c.JSON(fiber.Map{ "message": "Welcome to the FortuneBet API", - "version": "1.0.dev16", + "version": "1.0.dev17", }) })