feat: removing odds when event is removed
This commit is contained in:
parent
35a03e1959
commit
c374fd7a96
|
|
@ -112,4 +112,7 @@ WHERE e.id = $1
|
||||||
AND e.status = 'upcoming'
|
AND e.status = 'upcoming'
|
||||||
AND o.is_active = true
|
AND o.is_active = true
|
||||||
AND o.source = 'bet365'
|
AND o.source = 'bet365'
|
||||||
LIMIT sqlc.narg('limit') OFFSET sqlc.narg('offset');
|
LIMIT sqlc.narg('limit') OFFSET sqlc.narg('offset');
|
||||||
|
-- name: DeleteOddsForEvent :exec
|
||||||
|
DELETE FROM odds
|
||||||
|
Where fi = $1;
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by sqlc. DO NOT EDIT.
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// sqlc v1.29.0
|
// sqlc v1.28.0
|
||||||
// source: monitor.sql
|
// source: monitor.sql
|
||||||
|
|
||||||
package dbgen
|
package dbgen
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,16 @@ import (
|
||||||
"github.com/jackc/pgx/v5/pgtype"
|
"github.com/jackc/pgx/v5/pgtype"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const DeleteOddsForEvent = `-- name: DeleteOddsForEvent :exec
|
||||||
|
DELETE FROM odds
|
||||||
|
Where fi = $1
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) DeleteOddsForEvent(ctx context.Context, fi pgtype.Text) error {
|
||||||
|
_, err := q.db.Exec(ctx, DeleteOddsForEvent, fi)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
const GetALLPrematchOdds = `-- name: GetALLPrematchOdds :many
|
const GetALLPrematchOdds = `-- name: GetALLPrematchOdds :many
|
||||||
SELECT event_id,
|
SELECT event_id,
|
||||||
fi,
|
fi,
|
||||||
|
|
|
||||||
|
|
@ -275,6 +275,13 @@ func (s *Store) GetPrematchOddsByUpcomingID(ctx context.Context, upcomingID stri
|
||||||
return domainOdds, nil
|
return domainOdds, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Store) DeleteOddsForEvent(ctx context.Context, eventID string) error {
|
||||||
|
return s.queries.DeleteOddsForEvent(ctx, pgtype.Text{
|
||||||
|
String: eventID,
|
||||||
|
Valid: true,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func getString(v interface{}) string {
|
func getString(v interface{}) string {
|
||||||
if s, ok := v.(string); ok {
|
if s, ok := v.(string); ok {
|
||||||
return s
|
return s
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package repository
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
|
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
|
||||||
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
||||||
|
|
@ -32,6 +33,7 @@ func (s *Store) GetOtp(ctx context.Context, sentTo string, sentfor domain.OtpFor
|
||||||
OtpFor: string(sentfor),
|
OtpFor: string(sentfor),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
fmt.Printf("OTP REPO error: %v sentTo: %v, medium: %v, otpFor: %v\n", err, sentTo, medium, sentfor)
|
||||||
if err == sql.ErrNoRows {
|
if err == sql.ErrNoRows {
|
||||||
return domain.Otp{}, domain.ErrOtpNotFound
|
return domain.Otp{}, domain.ErrOtpNotFound
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,4 +16,5 @@ type Service interface {
|
||||||
GetPaginatedPrematchOddsByUpcomingID(ctx context.Context, upcomingID string, limit domain.ValidInt64, offset domain.ValidInt64) ([]domain.Odd, error)
|
GetPaginatedPrematchOddsByUpcomingID(ctx context.Context, upcomingID string, limit domain.ValidInt64, offset domain.ValidInt64) ([]domain.Odd, error)
|
||||||
GetALLPrematchOdds(ctx context.Context) ([]domain.Odd, error)
|
GetALLPrematchOdds(ctx context.Context) ([]domain.Odd, error)
|
||||||
GetRawOddsByMarketID(ctx context.Context, marketID string, upcomingID string) (domain.RawOddsByMarketID, error)
|
GetRawOddsByMarketID(ctx context.Context, marketID string, upcomingID string) (domain.RawOddsByMarketID, error)
|
||||||
|
DeleteOddsForEvent(ctx context.Context, eventID string) error
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -517,6 +517,10 @@ func (s *ServiceImpl) GetPaginatedPrematchOddsByUpcomingID(ctx context.Context,
|
||||||
return s.store.GetPaginatedPrematchOddsByUpcomingID(ctx, upcomingID, limit, offset)
|
return s.store.GetPaginatedPrematchOddsByUpcomingID(ctx, upcomingID, limit, offset)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *ServiceImpl) DeleteOddsForEvent(ctx context.Context, eventID string) error {
|
||||||
|
return s.store.DeleteOddsForEvent(ctx, eventID)
|
||||||
|
}
|
||||||
|
|
||||||
func getString(v interface{}) string {
|
func getString(v interface{}) string {
|
||||||
if str, ok := v.(string); ok {
|
if str, ok := v.(string); ok {
|
||||||
return str
|
return str
|
||||||
|
|
|
||||||
|
|
@ -185,6 +185,11 @@ func (s *Service) FetchAndProcessResults(ctx context.Context) error {
|
||||||
s.logger.Error("Failed to remove event", "event_id", event.ID, "error", err)
|
s.logger.Error("Failed to remove event", "event_id", event.ID, "error", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
err = s.repo.DeleteOddsForEvent(ctx, event.ID)
|
||||||
|
if err != nil {
|
||||||
|
s.logger.Error("Failed to remove odds for event", "event_id", event.ID, "error", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package user
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
||||||
|
|
@ -33,6 +34,7 @@ func (s *Service) ResetPassword(ctx context.Context, resetReq domain.ResetPasswo
|
||||||
} else {
|
} else {
|
||||||
sentTo = resetReq.PhoneNumber
|
sentTo = resetReq.PhoneNumber
|
||||||
}
|
}
|
||||||
|
|
||||||
otp, err := s.otpStore.GetOtp(
|
otp, err := s.otpStore.GetOtp(
|
||||||
ctx, sentTo,
|
ctx, sentTo,
|
||||||
domain.OtpReset, resetReq.OtpMedium)
|
domain.OtpReset, resetReq.OtpMedium)
|
||||||
|
|
@ -55,6 +57,7 @@ func (s *Service) ResetPassword(ctx context.Context, resetReq domain.ResetPasswo
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// reset pass and mark otp as used
|
// reset pass and mark otp as used
|
||||||
|
|
||||||
err = s.userStore.UpdatePassword(ctx, sentTo, hashedPassword, otp.ID)
|
err = s.userStore.UpdatePassword(ctx, sentTo, hashedPassword, otp.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
||||||
|
|
@ -37,30 +37,30 @@ func StartDataFetchingCrons(eventService eventsvc.Service, oddsService oddssvc.S
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// {
|
{
|
||||||
// spec: "0 */5 * * * *", // Every 5 Minutes
|
spec: "0 */5 * * * *", // Every 5 Minutes
|
||||||
// task: func() {
|
task: func() {
|
||||||
// log.Println("Updating expired events status...")
|
log.Println("Updating expired events status...")
|
||||||
|
|
||||||
// if _, err := resultService.CheckAndUpdateExpiredEvents(context.Background()); err != nil {
|
if _, err := resultService.CheckAndUpdateExpiredEvents(context.Background()); err != nil {
|
||||||
// log.Printf("Failed to update events: %v", err)
|
log.Printf("Failed to update events: %v", err)
|
||||||
// } else {
|
} else {
|
||||||
// log.Printf("Successfully updated expired events")
|
log.Printf("Successfully updated expired events")
|
||||||
// }
|
}
|
||||||
// },
|
},
|
||||||
// },
|
},
|
||||||
// {
|
{
|
||||||
// spec: "0 */15 * * * *", // Every 15 Minutes
|
spec: "0 */15 * * * *", // Every 15 Minutes
|
||||||
// task: func() {
|
task: func() {
|
||||||
// log.Println("Fetching results for upcoming events...")
|
log.Println("Fetching results for upcoming events...")
|
||||||
|
|
||||||
// if err := resultService.FetchAndProcessResults(context.Background()); err != nil {
|
if err := resultService.FetchAndProcessResults(context.Background()); err != nil {
|
||||||
// log.Printf("Failed to process result: %v", err)
|
log.Printf("Failed to process result: %v", err)
|
||||||
// } else {
|
} else {
|
||||||
// log.Printf("Successfully processed all outcomes")
|
log.Printf("Successfully processed all outcomes")
|
||||||
// }
|
}
|
||||||
// },
|
},
|
||||||
// },
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, job := range schedule {
|
for _, job := range schedule {
|
||||||
|
|
|
||||||
|
|
@ -78,11 +78,10 @@ func (h *Handler) ConnectSocket(c *fiber.Ctx) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
h.notificationSvc.Hub.Register <- client
|
h.notificationSvc.Hub.Register <- client
|
||||||
h.logger.Info("WebSocket connection established", "userID", userID)
|
// h.logger.Info("WebSocket connection established", "userID", userID)
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
h.notificationSvc.Hub.Unregister <- client
|
h.notificationSvc.Hub.Unregister <- client
|
||||||
h.logger.Info("WebSocket connection closed", "userID", userID)
|
|
||||||
conn.Close()
|
conn.Close()
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -253,7 +253,7 @@ func (h *Handler) GetCustomerWallet(c *fiber.Ctx) error {
|
||||||
// return fiber.NewError(fiber.StatusBadRequest, "Invalid company_id")
|
// return fiber.NewError(fiber.StatusBadRequest, "Invalid company_id")
|
||||||
// }
|
// }
|
||||||
|
|
||||||
h.logger.Info("Fetching customer wallet", "userID", userID)
|
// h.logger.Info("Fetching customer wallet", "userID", userID)
|
||||||
|
|
||||||
wallet, err := h.walletSvc.GetWalletsByUser(c.Context(), userID)
|
wallet, err := h.walletSvc.GetWalletsByUser(c.Context(), userID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ func (a *App) authMiddleware(c *fiber.Ctx) error {
|
||||||
|
|
||||||
authHeader := c.Get("Authorization")
|
authHeader := c.Get("Authorization")
|
||||||
if authHeader == "" {
|
if authHeader == "" {
|
||||||
fmt.Println("Auth Header Missing")
|
// fmt.Println("Auth Header Missing")
|
||||||
return fiber.NewError(fiber.StatusUnauthorized, "Authorization header missing")
|
return fiber.NewError(fiber.StatusUnauthorized, "Authorization header missing")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user