From cdc40397b95a430875c531e37ec30cdc06da878c Mon Sep 17 00:00:00 2001 From: Samuel Tariku Date: Mon, 19 May 2025 15:38:52 +0300 Subject: [PATCH] fix: date filter --- db/query/events.sql | 4 +--- docs/docs.go | 12 ++++++++++++ docs/swagger.json | 12 ++++++++++++ docs/swagger.yaml | 8 ++++++++ gen/db/events.sql.go | 4 +--- internal/repository/event.go | 2 +- internal/services/event/service.go | 6 ++---- internal/web_server/cron.go | 2 +- internal/web_server/handlers/prematch.go | 3 +++ 9 files changed, 41 insertions(+), 12 deletions(-) diff --git a/db/query/events.sql b/db/query/events.sql index 1e40107..652ac5d 100644 --- a/db/query/events.sql +++ b/db/query/events.sql @@ -158,9 +158,7 @@ SELECT id, status, fetched_at FROM events -WHERE is_live = false - AND status = 'upcoming' - AND start_time < now() +WHERE start_time < now() ORDER BY start_time ASC; -- name: GetTotalEvents :one SELECT COUNT(*) diff --git a/docs/docs.go b/docs/docs.go index b817783..c3a8ea7 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1705,6 +1705,18 @@ const docTemplate = `{ "description": "Sport ID Filter", "name": "sport_id", "in": "query" + }, + { + "type": "string", + "description": "Start Time", + "name": "first_start_time", + "in": "query" + }, + { + "type": "string", + "description": "End Time", + "name": "last_start_time", + "in": "query" } ], "responses": { diff --git a/docs/swagger.json b/docs/swagger.json index d4e8cfe..272d16b 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -1697,6 +1697,18 @@ "description": "Sport ID Filter", "name": "sport_id", "in": "query" + }, + { + "type": "string", + "description": "Start Time", + "name": "first_start_time", + "in": "query" + }, + { + "type": "string", + "description": "End Time", + "name": "last_start_time", + "in": "query" } ], "responses": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 0387494..3dd0f4b 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -2306,6 +2306,14 @@ paths: in: query name: sport_id type: string + - description: Start Time + in: query + name: first_start_time + type: string + - description: End Time + in: query + name: last_start_time + type: string produces: - application/json responses: diff --git a/gen/db/events.sql.go b/gen/db/events.sql.go index 6c1e083..3879adf 100644 --- a/gen/db/events.sql.go +++ b/gen/db/events.sql.go @@ -118,9 +118,7 @@ SELECT id, status, fetched_at FROM events -WHERE is_live = false - AND status = 'upcoming' - AND start_time < now() +WHERE start_time < now() ORDER BY start_time ASC ` diff --git a/internal/repository/event.go b/internal/repository/event.go index 904ca2c..03b3abb 100644 --- a/internal/repository/event.go +++ b/internal/repository/event.go @@ -133,7 +133,7 @@ func (s *Store) GetPaginatedUpcomingEvents(ctx context.Context, limit domain.Val Valid: limit.Valid, }, Offset: pgtype.Int4{ - Int32: int32(offset.Value), + Int32: int32(offset.Value * limit.Value), Valid: offset.Valid, }, FirstStartTime: pgtype.Timestamp{ diff --git a/internal/services/event/service.go b/internal/services/event/service.go index 37781d1..fe51aa7 100644 --- a/internal/services/event/service.go +++ b/internal/services/event/service.go @@ -99,8 +99,7 @@ func (s *service) FetchLiveEvents(ctx context.Context) error { } func (s *service) FetchUpcomingEvents(ctx context.Context) error { - // sportIDs := []int{1, 18, 17} - sportIDs := []int{18, 17} + sportIDs := []int{1, 18, 17} for _, sportID := range sportIDs { var totalPages int = 1 @@ -142,7 +141,6 @@ func (s *service) FetchUpcomingEvents(ctx context.Context) error { ID string `json:"id"` Name string `json:"name"` } `json:"away"` - } `json:"results"` } if err := json.Unmarshal(body, &data); err != nil || data.Success != 1 { @@ -165,7 +163,7 @@ func (s *service) FetchUpcomingEvents(ctx context.Context) error { } if !slices.Contains(domain.SupportedLeagues, leagueID) { - fmt.Printf("⚠️ Skipping league %s (%d) as it is not supported\n", ev.League.Name, leagueID) + // fmt.Printf("⚠️ Skipping league %s (%d) as it is not supported\n", ev.League.Name, leagueID) skippedLeague = append(skippedLeague, ev.League.Name) continue } diff --git a/internal/web_server/cron.go b/internal/web_server/cron.go index 1bbefe7..769d0b3 100644 --- a/internal/web_server/cron.go +++ b/internal/web_server/cron.go @@ -52,6 +52,7 @@ func StartDataFetchingCrons(eventService eventsvc.Service, oddsService oddssvc.S } for _, job := range schedule { + // job.task() if _, err := c.AddFunc(job.spec, job.task); err != nil { log.Fatalf("Failed to schedule cron job: %v", err) } @@ -82,7 +83,6 @@ func StartTicketCrons(ticketService ticket.Service) { } for _, job := range schedule { - job.task() if _, err := c.AddFunc(job.spec, job.task); err != nil { log.Fatalf("Failed to schedule cron job: %v", err) } diff --git a/internal/web_server/handlers/prematch.go b/internal/web_server/handlers/prematch.go index 52e3780..b8d3778 100644 --- a/internal/web_server/handlers/prematch.go +++ b/internal/web_server/handlers/prematch.go @@ -99,6 +99,8 @@ func (h *Handler) GetRawOddsByMarketID(c *fiber.Ctx) error { // @Param page_size query int false "Page size" // @Param league_id query string false "League ID Filter" // @Param sport_id query string false "Sport ID Filter" +// @Param first_start_time query string false "Start Time" +// @Param last_start_time query string false "End Time" // @Success 200 {array} domain.UpcomingEvent // @Failure 500 {object} response.APIResponse // @Router /prematch/events [get] @@ -152,6 +154,7 @@ func (h *Handler) GetAllUpcomingEvents(c *fiber.Ctx) error { Value: int64(page - 1), Valid: true, } + events, total, err := h.eventSvc.GetPaginatedUpcomingEvents( c.Context(), limit, offset, leagueID, sportID, firstStartTime, lastStartTime)