fix: get total
This commit is contained in:
parent
cdc40397b9
commit
e838fea020
|
|
@ -166,12 +166,20 @@ FROM events
|
|||
WHERE is_live = false
|
||||
AND status = 'upcoming'
|
||||
AND (
|
||||
league_id = $1
|
||||
OR $1 IS NULL
|
||||
league_id = sqlc.narg('league_id')
|
||||
OR sqlc.narg('league_id') IS NULL
|
||||
)
|
||||
AND (
|
||||
sport_id = $2
|
||||
OR $2 IS NULL
|
||||
sport_id = sqlc.narg('sport_id')
|
||||
OR sqlc.narg('sport_id') IS NULL
|
||||
)
|
||||
AND (
|
||||
start_time < sqlc.narg('last_start_time')
|
||||
OR sqlc.narg('last_start_time') IS NULL
|
||||
)
|
||||
AND (
|
||||
start_time > sqlc.narg('first_start_time')
|
||||
OR sqlc.narg('first_start_time') IS NULL
|
||||
);
|
||||
-- name: GetPaginatedUpcomingEvents :many
|
||||
SELECT id,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.28.0
|
||||
|
|
@ -303,15 +304,30 @@ WHERE is_live = false
|
|||
sport_id = $2
|
||||
OR $2 IS NULL
|
||||
)
|
||||
AND (
|
||||
start_time < $3
|
||||
OR $3 IS NULL
|
||||
)
|
||||
AND (
|
||||
start_time > $4
|
||||
OR $4 IS NULL
|
||||
)
|
||||
`
|
||||
|
||||
type GetTotalEventsParams struct {
|
||||
LeagueID pgtype.Text `json:"league_id"`
|
||||
SportID pgtype.Text `json:"sport_id"`
|
||||
LeagueID pgtype.Text `json:"league_id"`
|
||||
SportID pgtype.Text `json:"sport_id"`
|
||||
LastStartTime pgtype.Timestamp `json:"last_start_time"`
|
||||
FirstStartTime pgtype.Timestamp `json:"first_start_time"`
|
||||
}
|
||||
|
||||
func (q *Queries) GetTotalEvents(ctx context.Context, arg GetTotalEventsParams) (int64, error) {
|
||||
row := q.db.QueryRow(ctx, GetTotalEvents, arg.LeagueID, arg.SportID)
|
||||
row := q.db.QueryRow(ctx, GetTotalEvents,
|
||||
arg.LeagueID,
|
||||
arg.SportID,
|
||||
arg.LastStartTime,
|
||||
arg.FirstStartTime,
|
||||
)
|
||||
var count int64
|
||||
err := row.Scan(&count)
|
||||
return count, err
|
||||
|
|
|
|||
|
|
@ -149,7 +149,6 @@ func (s *Store) GetPaginatedUpcomingEvents(ctx context.Context, limit domain.Val
|
|||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
upcomingEvents := make([]domain.UpcomingEvent, len(events))
|
||||
for i, e := range events {
|
||||
upcomingEvents[i] = domain.UpcomingEvent{
|
||||
|
|
@ -177,6 +176,14 @@ func (s *Store) GetPaginatedUpcomingEvents(ctx context.Context, limit domain.Val
|
|||
String: sportID.Value,
|
||||
Valid: sportID.Valid,
|
||||
},
|
||||
FirstStartTime: pgtype.Timestamp{
|
||||
Time: firstStartTime.Value.UTC(),
|
||||
Valid: firstStartTime.Valid,
|
||||
},
|
||||
LastStartTime: pgtype.Timestamp{
|
||||
Time: lastStartTime.Value.UTC(),
|
||||
Valid: lastStartTime.Valid,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
|
|
|
|||
|
|
@ -47,8 +47,9 @@ func (s *Service) FetchAndProcessResults(ctx context.Context) error {
|
|||
return err
|
||||
}
|
||||
fmt.Printf("⚠️ Expired Events: %d \n", len(events))
|
||||
removed := 0
|
||||
for i, event := range events {
|
||||
fmt.Printf("🕛 Checking if event has bets placed on it %v (%d/%d) \n", event.ID, i+1, len(events))
|
||||
|
||||
eventID, err := strconv.ParseInt(event.ID, 10, 64)
|
||||
if err != nil {
|
||||
s.logger.Error("Failed to parse event id")
|
||||
|
|
@ -61,7 +62,9 @@ func (s *Service) FetchAndProcessResults(ctx context.Context) error {
|
|||
}
|
||||
|
||||
if len(outcomes) == 0 {
|
||||
continue
|
||||
fmt.Printf("🕛 No bets have been placed on event %v (%d/%d) \n", event.ID, i+1, len(events))
|
||||
} else {
|
||||
fmt.Printf("✅ %d bets have been placed on event %v (%d/%d) \n", len(outcomes), event.ID, i+1, len(events))
|
||||
}
|
||||
|
||||
isDeleted := true
|
||||
|
|
@ -126,12 +129,14 @@ func (s *Service) FetchAndProcessResults(ctx context.Context) error {
|
|||
if err != bet.ErrOutcomesNotCompleted {
|
||||
s.logger.Error("Failed to check bet outcome for bet", "event_id", outcome.EventID, "error", err)
|
||||
}
|
||||
isDeleted = false
|
||||
continue
|
||||
}
|
||||
fmt.Printf("🧾 Updating bet %v - event %v (%d/%d) to %v\n", outcome.BetID, event.ID, j+1, len(outcomes), status.String())
|
||||
err = s.betSvc.UpdateStatus(ctx, outcome.BetID, status)
|
||||
if err != nil {
|
||||
s.logger.Error("Failed to update bet status", "event id", outcome.EventID, "error", err)
|
||||
isDeleted = false
|
||||
continue
|
||||
}
|
||||
fmt.Printf("✅ Successfully updated 🎫 Bet %v - event %v(%v) (%d/%d) \n",
|
||||
|
|
@ -141,14 +146,17 @@ func (s *Service) FetchAndProcessResults(ctx context.Context) error {
|
|||
|
||||
}
|
||||
if isDeleted {
|
||||
// err = s.repo.DeleteEvent(ctx, event.ID)
|
||||
// if err != nil {
|
||||
// s.logger.Error("Failed to remove event", "event_id", event.ID, "error", err)
|
||||
// return err
|
||||
// }
|
||||
removed += 1
|
||||
fmt.Printf("⚠️ Removing Event %v \n", event.ID)
|
||||
err = s.repo.DeleteEvent(ctx, event.ID)
|
||||
if err != nil {
|
||||
s.logger.Error("Failed to remove event", "event_id", event.ID, "error", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
fmt.Printf("🗑️ Removed Events: %d \n", removed)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,22 +21,22 @@ func StartDataFetchingCrons(eventService eventsvc.Service, oddsService oddssvc.S
|
|||
spec string
|
||||
task func()
|
||||
}{
|
||||
{
|
||||
spec: "0 0 * * * *", // Every 1 hour
|
||||
task: func() {
|
||||
if err := eventService.FetchUpcomingEvents(context.Background()); err != nil {
|
||||
log.Printf("FetchUpcomingEvents error: %v", err)
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
spec: "0 */15 * * * *", // Every 15 minutes
|
||||
task: func() {
|
||||
if err := oddsService.FetchNonLiveOdds(context.Background()); err != nil {
|
||||
log.Printf("FetchNonLiveOdds error: %v", err)
|
||||
}
|
||||
},
|
||||
},
|
||||
// {
|
||||
// spec: "0 0 * * * *", // Every 1 hour
|
||||
// task: func() {
|
||||
// if err := eventService.FetchUpcomingEvents(context.Background()); err != nil {
|
||||
// log.Printf("FetchUpcomingEvents error: %v", err)
|
||||
// }
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
// spec: "0 */15 * * * *", // Every 15 minutes
|
||||
// task: func() {
|
||||
// if err := oddsService.FetchNonLiveOdds(context.Background()); err != nil {
|
||||
// log.Printf("FetchNonLiveOdds error: %v", err)
|
||||
// }
|
||||
// },
|
||||
// },
|
||||
{
|
||||
spec: "0 */15 * * * *", // Every 15 Minutes
|
||||
task: func() {
|
||||
|
|
@ -52,7 +52,7 @@ func StartDataFetchingCrons(eventService eventsvc.Service, oddsService oddssvc.S
|
|||
}
|
||||
|
||||
for _, job := range schedule {
|
||||
// job.task()
|
||||
job.task()
|
||||
if _, err := c.AddFunc(job.spec, job.task); err != nil {
|
||||
log.Fatalf("Failed to schedule cron job: %v", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package handlers
|
|||
import (
|
||||
"encoding/json"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
||||
"github.com/SamuelTariku/FortuneBet-Backend/internal/web_server/response"
|
||||
|
|
@ -76,10 +77,10 @@ func (h *Handler) CreateTicket(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
// Checking to make sure the event hasn't already started
|
||||
// currentTime := time.Now()
|
||||
// if event.StartTime.Before(currentTime) {
|
||||
// return response.WriteJSON(c, fiber.StatusBadRequest, "The event has already expired", nil, nil)
|
||||
// }
|
||||
currentTime := time.Now()
|
||||
if event.StartTime.Before(currentTime) {
|
||||
return response.WriteJSON(c, fiber.StatusBadRequest, "The event has already expired", nil, nil)
|
||||
}
|
||||
|
||||
odds, err := h.prematchSvc.GetRawOddsByMarketID(c.Context(), marketIDStr, eventIDStr)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user