fix: minor fixes
This commit is contained in:
parent
2ce6255908
commit
192cdb3b26
|
|
@ -19,7 +19,6 @@ CREATE TABLE IF NOT EXISTS users (
|
||||||
OR phone_number IS NOT NULL
|
OR phone_number IS NOT NULL
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS wallets (
|
CREATE TABLE IF NOT EXISTS wallets (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
balance BIGINT NOT NULL DEFAULT 0,
|
balance BIGINT NOT NULL DEFAULT 0,
|
||||||
|
|
@ -32,7 +31,6 @@ CREATE TABLE IF NOT EXISTS wallets (
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE refresh_tokens (
|
CREATE TABLE refresh_tokens (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
user_id BIGINT NOT NULL,
|
user_id BIGINT NOT NULL,
|
||||||
|
|
@ -42,26 +40,6 @@ CREATE TABLE refresh_tokens (
|
||||||
revoked BOOLEAN DEFAULT FALSE NOT NULL,
|
revoked BOOLEAN DEFAULT FALSE NOT NULL,
|
||||||
CONSTRAINT unique_token UNIQUE (token)
|
CONSTRAINT unique_token UNIQUE (token)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE direct_deposits (
|
|
||||||
id BIGSERIAL PRIMARY KEY,
|
|
||||||
customer_id BIGINT NOT NULL REFERENCES users(id),
|
|
||||||
wallet_id BIGINT NOT NULL REFERENCES wallets(id),
|
|
||||||
amount NUMERIC(15, 2) NOT NULL,
|
|
||||||
bank_reference TEXT NOT NULL,
|
|
||||||
sender_account TEXT NOT NULL,
|
|
||||||
status TEXT NOT NULL CHECK (status IN ('pending', 'completed', 'rejected')),
|
|
||||||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
||||||
verified_by BIGINT REFERENCES users(id),
|
|
||||||
verification_notes TEXT,
|
|
||||||
verified_at TIMESTAMP
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE INDEX idx_direct_deposits_status ON direct_deposits(status);
|
|
||||||
CREATE INDEX idx_direct_deposits_customer ON direct_deposits(customer_id);
|
|
||||||
CREATE INDEX idx_direct_deposits_reference ON direct_deposits(bank_reference);
|
|
||||||
|
|
||||||
-----
|
-----
|
||||||
CREATE TABLE otps (
|
CREATE TABLE otps (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ func (q *Queries) DeleteEvent(ctx context.Context, id string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
const GetAllUpcomingEvents = `-- name: GetAllUpcomingEvents :many
|
const GetAllUpcomingEvents = `-- name: GetAllUpcomingEvents :many
|
||||||
SELECT id, sport_id, match_name, home_team, away_team, home_team_id, away_team_id, home_kit_image, away_kit_image, league_id, league_name, league_cc, start_time, score, match_minute, timer_status, added_time, match_period, is_live, status, fetched_at, source, is_featured, is_monitored, is_active
|
SELECT id, sport_id, match_name, home_team, away_team, home_team_id, away_team_id, home_kit_image, away_kit_image, league_id, league_name, league_cc, start_time, score, match_minute, timer_status, added_time, match_period, is_live, status, fetched_at, source, is_featured, is_monitored, winning_upper_limit, is_active
|
||||||
FROM events
|
FROM events
|
||||||
WHERE start_time > now()
|
WHERE start_time > now()
|
||||||
AND is_live = false
|
AND is_live = false
|
||||||
|
|
@ -64,6 +64,7 @@ func (q *Queries) GetAllUpcomingEvents(ctx context.Context) ([]Event, error) {
|
||||||
&i.Source,
|
&i.Source,
|
||||||
&i.IsFeatured,
|
&i.IsFeatured,
|
||||||
&i.IsMonitored,
|
&i.IsMonitored,
|
||||||
|
&i.WinningUpperLimit,
|
||||||
&i.IsActive,
|
&i.IsActive,
|
||||||
); err != nil {
|
); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
@ -77,7 +78,7 @@ func (q *Queries) GetAllUpcomingEvents(ctx context.Context) ([]Event, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const GetExpiredUpcomingEvents = `-- name: GetExpiredUpcomingEvents :many
|
const GetExpiredUpcomingEvents = `-- name: GetExpiredUpcomingEvents :many
|
||||||
SELECT events.id, events.sport_id, events.match_name, events.home_team, events.away_team, events.home_team_id, events.away_team_id, events.home_kit_image, events.away_kit_image, events.league_id, events.league_name, events.league_cc, events.start_time, events.score, events.match_minute, events.timer_status, events.added_time, events.match_period, events.is_live, events.status, events.fetched_at, events.source, events.is_featured, events.is_monitored, events.is_active,
|
SELECT events.id, events.sport_id, events.match_name, events.home_team, events.away_team, events.home_team_id, events.away_team_id, events.home_kit_image, events.away_kit_image, events.league_id, events.league_name, events.league_cc, events.start_time, events.score, events.match_minute, events.timer_status, events.added_time, events.match_period, events.is_live, events.status, events.fetched_at, events.source, events.is_featured, events.is_monitored, events.winning_upper_limit, events.is_active,
|
||||||
leagues.country_code as league_cc
|
leagues.country_code as league_cc
|
||||||
FROM events
|
FROM events
|
||||||
LEFT JOIN leagues ON leagues.id = league_id
|
LEFT JOIN leagues ON leagues.id = league_id
|
||||||
|
|
@ -114,6 +115,7 @@ type GetExpiredUpcomingEventsRow struct {
|
||||||
Source pgtype.Text `json:"source"`
|
Source pgtype.Text `json:"source"`
|
||||||
IsFeatured bool `json:"is_featured"`
|
IsFeatured bool `json:"is_featured"`
|
||||||
IsMonitored bool `json:"is_monitored"`
|
IsMonitored bool `json:"is_monitored"`
|
||||||
|
WinningUpperLimit int32 `json:"winning_upper_limit"`
|
||||||
IsActive bool `json:"is_active"`
|
IsActive bool `json:"is_active"`
|
||||||
LeagueCc_2 pgtype.Text `json:"league_cc_2"`
|
LeagueCc_2 pgtype.Text `json:"league_cc_2"`
|
||||||
}
|
}
|
||||||
|
|
@ -152,6 +154,7 @@ func (q *Queries) GetExpiredUpcomingEvents(ctx context.Context, status pgtype.Te
|
||||||
&i.Source,
|
&i.Source,
|
||||||
&i.IsFeatured,
|
&i.IsFeatured,
|
||||||
&i.IsMonitored,
|
&i.IsMonitored,
|
||||||
|
&i.WinningUpperLimit,
|
||||||
&i.IsActive,
|
&i.IsActive,
|
||||||
&i.LeagueCc_2,
|
&i.LeagueCc_2,
|
||||||
); err != nil {
|
); err != nil {
|
||||||
|
|
@ -166,7 +169,7 @@ func (q *Queries) GetExpiredUpcomingEvents(ctx context.Context, status pgtype.Te
|
||||||
}
|
}
|
||||||
|
|
||||||
const GetPaginatedUpcomingEvents = `-- name: GetPaginatedUpcomingEvents :many
|
const GetPaginatedUpcomingEvents = `-- name: GetPaginatedUpcomingEvents :many
|
||||||
SELECT events.id, events.sport_id, events.match_name, events.home_team, events.away_team, events.home_team_id, events.away_team_id, events.home_kit_image, events.away_kit_image, events.league_id, events.league_name, events.league_cc, events.start_time, events.score, events.match_minute, events.timer_status, events.added_time, events.match_period, events.is_live, events.status, events.fetched_at, events.source, events.is_featured, events.is_monitored, events.is_active,
|
SELECT events.id, events.sport_id, events.match_name, events.home_team, events.away_team, events.home_team_id, events.away_team_id, events.home_kit_image, events.away_kit_image, events.league_id, events.league_name, events.league_cc, events.start_time, events.score, events.match_minute, events.timer_status, events.added_time, events.match_period, events.is_live, events.status, events.fetched_at, events.source, events.is_featured, events.is_monitored, events.winning_upper_limit, events.is_active,
|
||||||
leagues.country_code as league_cc
|
leagues.country_code as league_cc
|
||||||
FROM events
|
FROM events
|
||||||
LEFT JOIN leagues ON leagues.id = league_id
|
LEFT JOIN leagues ON leagues.id = league_id
|
||||||
|
|
@ -243,6 +246,7 @@ type GetPaginatedUpcomingEventsRow struct {
|
||||||
Source pgtype.Text `json:"source"`
|
Source pgtype.Text `json:"source"`
|
||||||
IsFeatured bool `json:"is_featured"`
|
IsFeatured bool `json:"is_featured"`
|
||||||
IsMonitored bool `json:"is_monitored"`
|
IsMonitored bool `json:"is_monitored"`
|
||||||
|
WinningUpperLimit int32 `json:"winning_upper_limit"`
|
||||||
IsActive bool `json:"is_active"`
|
IsActive bool `json:"is_active"`
|
||||||
LeagueCc_2 pgtype.Text `json:"league_cc_2"`
|
LeagueCc_2 pgtype.Text `json:"league_cc_2"`
|
||||||
}
|
}
|
||||||
|
|
@ -291,6 +295,7 @@ func (q *Queries) GetPaginatedUpcomingEvents(ctx context.Context, arg GetPaginat
|
||||||
&i.Source,
|
&i.Source,
|
||||||
&i.IsFeatured,
|
&i.IsFeatured,
|
||||||
&i.IsMonitored,
|
&i.IsMonitored,
|
||||||
|
&i.WinningUpperLimit,
|
||||||
&i.IsActive,
|
&i.IsActive,
|
||||||
&i.LeagueCc_2,
|
&i.LeagueCc_2,
|
||||||
); err != nil {
|
); err != nil {
|
||||||
|
|
@ -367,7 +372,7 @@ func (q *Queries) GetTotalEvents(ctx context.Context, arg GetTotalEventsParams)
|
||||||
}
|
}
|
||||||
|
|
||||||
const GetUpcomingByID = `-- name: GetUpcomingByID :one
|
const GetUpcomingByID = `-- name: GetUpcomingByID :one
|
||||||
SELECT id, sport_id, match_name, home_team, away_team, home_team_id, away_team_id, home_kit_image, away_kit_image, league_id, league_name, league_cc, start_time, score, match_minute, timer_status, added_time, match_period, is_live, status, fetched_at, source, is_featured, is_monitored, is_active
|
SELECT id, sport_id, match_name, home_team, away_team, home_team_id, away_team_id, home_kit_image, away_kit_image, league_id, league_name, league_cc, start_time, score, match_minute, timer_status, added_time, match_period, is_live, status, fetched_at, source, is_featured, is_monitored, winning_upper_limit, is_active
|
||||||
FROM events
|
FROM events
|
||||||
WHERE id = $1
|
WHERE id = $1
|
||||||
AND is_live = false
|
AND is_live = false
|
||||||
|
|
@ -403,6 +408,7 @@ func (q *Queries) GetUpcomingByID(ctx context.Context, id string) (Event, error)
|
||||||
&i.Source,
|
&i.Source,
|
||||||
&i.IsFeatured,
|
&i.IsFeatured,
|
||||||
&i.IsMonitored,
|
&i.IsMonitored,
|
||||||
|
&i.WinningUpperLimit,
|
||||||
&i.IsActive,
|
&i.IsActive,
|
||||||
)
|
)
|
||||||
return i, err
|
return i, err
|
||||||
|
|
|
||||||
|
|
@ -208,6 +208,16 @@ type Company struct {
|
||||||
UpdatedAt pgtype.Timestamp `json:"updated_at"`
|
UpdatedAt pgtype.Timestamp `json:"updated_at"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type CustomOdd struct {
|
||||||
|
ID int64 `json:"id"`
|
||||||
|
OddID int64 `json:"odd_id"`
|
||||||
|
RawOddID int64 `json:"raw_odd_id"`
|
||||||
|
MarketID string `json:"market_id"`
|
||||||
|
EventID string `json:"event_id"`
|
||||||
|
OddValue float64 `json:"odd_value"`
|
||||||
|
CreatedAt pgtype.Timestamp `json:"created_at"`
|
||||||
|
}
|
||||||
|
|
||||||
type CustomerWallet struct {
|
type CustomerWallet struct {
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
CustomerID int64 `json:"customer_id"`
|
CustomerID int64 `json:"customer_id"`
|
||||||
|
|
@ -248,6 +258,15 @@ type DirectDeposit struct {
|
||||||
VerifiedAt pgtype.Timestamp `json:"verified_at"`
|
VerifiedAt pgtype.Timestamp `json:"verified_at"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type DisabledOdd struct {
|
||||||
|
ID int64 `json:"id"`
|
||||||
|
OddID int64 `json:"odd_id"`
|
||||||
|
RawOddID int64 `json:"raw_odd_id"`
|
||||||
|
MarketID string `json:"market_id"`
|
||||||
|
EventID string `json:"event_id"`
|
||||||
|
CreatedAt pgtype.Timestamp `json:"created_at"`
|
||||||
|
}
|
||||||
|
|
||||||
type Event struct {
|
type Event struct {
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
SportID pgtype.Int4 `json:"sport_id"`
|
SportID pgtype.Int4 `json:"sport_id"`
|
||||||
|
|
@ -273,6 +292,7 @@ type Event struct {
|
||||||
Source pgtype.Text `json:"source"`
|
Source pgtype.Text `json:"source"`
|
||||||
IsFeatured bool `json:"is_featured"`
|
IsFeatured bool `json:"is_featured"`
|
||||||
IsMonitored bool `json:"is_monitored"`
|
IsMonitored bool `json:"is_monitored"`
|
||||||
|
WinningUpperLimit int32 `json:"winning_upper_limit"`
|
||||||
IsActive bool `json:"is_active"`
|
IsActive bool `json:"is_active"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,65 +28,65 @@ func StartDataFetchingCrons(eventService eventsvc.Service, oddsService oddssvc.S
|
||||||
// {
|
// {
|
||||||
// spec: "0 0 * * * *", // Every 1 hour
|
// spec: "0 0 * * * *", // Every 1 hour
|
||||||
// task: func() {
|
// task: func() {
|
||||||
// mongoLogger.Info("Began fetching upcoming events")
|
// mongoLogger.Info("Began fetching upcoming events cron task")
|
||||||
// if err := eventService.FetchUpcomingEvents(context.Background()); err != nil {
|
// if err := eventService.FetchUpcomingEvents(context.Background()); err != nil {
|
||||||
// mongoLogger.Error("Failed to fetch upcoming events",
|
// mongoLogger.Error("Failed to fetch upcoming events",
|
||||||
// zap.Error(err),
|
// zap.Error(err),
|
||||||
// )
|
// )
|
||||||
// } else {
|
// } else {
|
||||||
// mongoLogger.Info("Successfully fetched upcoming events")
|
// mongoLogger.Info("Completed fetching upcoming events without errors")
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// {
|
// {
|
||||||
// spec: "0 0 * * * *", // Every 1 hour (since its takes that long to fetch all the events)
|
// spec: "0 0 * * * *", // Every 1 hour (since its takes that long to fetch all the events)
|
||||||
// task: func() {
|
// task: func() {
|
||||||
// mongoLogger.Info("Began fetching non live odds")
|
// mongoLogger.Info("Began fetching non live odds cron task")
|
||||||
// if err := oddsService.FetchNonLiveOdds(context.Background()); err != nil {
|
// if err := oddsService.FetchNonLiveOdds(context.Background()); err != nil {
|
||||||
// mongoLogger.Error("Failed to fetch non live odds",
|
// mongoLogger.Error("Failed to fetch non live odds",
|
||||||
// zap.Error(err),
|
// zap.Error(err),
|
||||||
// )
|
// )
|
||||||
// } else {
|
// } else {
|
||||||
// mongoLogger.Info("Successfully fetched non live odds")
|
// mongoLogger.Info("Completed fetching non live odds without errors")
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
spec: "0 */5 * * * *", // Every 5 Minutes
|
spec: "0 */5 * * * *", // Every 5 Minutes
|
||||||
task: func() {
|
task: func() {
|
||||||
mongoLogger.Info("Began updating all expired events status")
|
mongoLogger.Info("Began update all expired events status cron task")
|
||||||
if _, err := resultService.CheckAndUpdateExpiredEvents(context.Background()); err != nil {
|
if _, err := resultService.CheckAndUpdateExpiredEvents(context.Background()); err != nil {
|
||||||
mongoLogger.Error("Failed to update expired events status",
|
mongoLogger.Error("Failed to update expired events status",
|
||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
mongoLogger.Info("Successfully updated expired events")
|
mongoLogger.Info("Completed expired events without errors")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
// spec: "0 */15 * * * *", // Every 15 Minutes
|
// spec: "0 */15 * * * *", // Every 15 Minutes
|
||||||
// task: func() {
|
// task: func() {
|
||||||
// mongoLogger.Info("Fetching results for upcoming events")
|
// mongoLogger.Info("Began fetching results for upcoming events cron task")
|
||||||
// if err := resultService.FetchAndProcessResults(context.Background()); err != nil {
|
// if err := resultService.FetchAndProcessResults(context.Background()); err != nil {
|
||||||
// mongoLogger.Error("Failed to process result",
|
// mongoLogger.Error("Failed to process result",
|
||||||
// zap.Error(err),
|
// zap.Error(err),
|
||||||
// )
|
// )
|
||||||
// } else {
|
// } else {
|
||||||
// mongoLogger.Info("Successfully processed all event result outcomes")
|
// mongoLogger.Info("Completed processing all event result outcomes without errors")
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
spec: "0 0 * * * *", // Every Day
|
spec: "0 0 * * * *", // Every Day
|
||||||
task: func() {
|
task: func() {
|
||||||
mongoLogger.Info("Send daily result notification")
|
mongoLogger.Info("Began Send daily result notification cron task")
|
||||||
if err := resultService.CheckAndSendResultNotifications(context.Background(), time.Now().Add(-24*time.Hour)); err != nil {
|
if err := resultService.CheckAndSendResultNotifications(context.Background(), time.Now().Add(-24*time.Hour)); err != nil {
|
||||||
mongoLogger.Error("Failed to process result",
|
mongoLogger.Error("Failed to process result",
|
||||||
zap.Error(err),
|
zap.Error(err),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
mongoLogger.Info("Successfully processed all event result outcomes")
|
mongoLogger.Info("Completed sending daily result notification without errors")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user