- Updated league handling to ensure valid page size checks and improved error handling for sport ID parsing. - Introduced new endpoint to update global league settings with comprehensive validation and error logging. - Refactored odds settings management, including saving, removing, and updating odds settings with enhanced validation. - Added tenant slug retrieval by token, ensuring proper user and company validation. - Improved middleware to check for active company status and adjusted route permissions for various endpoints. - Added SQL script to fix auto-increment desynchronization across multiple tables.
234 lines
5.4 KiB
SQL
234 lines
5.4 KiB
SQL
-- name: CreateBet :one
|
|
INSERT INTO bets (
|
|
amount,
|
|
total_odds,
|
|
status,
|
|
user_id,
|
|
is_shop_bet,
|
|
outcomes_hash,
|
|
fast_code,
|
|
company_id
|
|
)
|
|
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
|
|
RETURNING *;
|
|
-- name: CreateBetOutcome :copyfrom
|
|
INSERT INTO bet_outcomes (
|
|
bet_id,
|
|
sport_id,
|
|
event_id,
|
|
odd_id,
|
|
home_team_name,
|
|
away_team_name,
|
|
market_id,
|
|
market_name,
|
|
odd,
|
|
odd_name,
|
|
odd_header,
|
|
odd_handicap,
|
|
expires
|
|
)
|
|
VALUES (
|
|
$1,
|
|
$2,
|
|
$3,
|
|
$4,
|
|
$5,
|
|
$6,
|
|
$7,
|
|
$8,
|
|
$9,
|
|
$10,
|
|
$11,
|
|
$12,
|
|
$13
|
|
);
|
|
-- name: GetAllBets :many
|
|
SELECT *
|
|
FROM bet_with_outcomes
|
|
wHERE (
|
|
user_id = sqlc.narg('user_id')
|
|
OR sqlc.narg('user_id') IS NULL
|
|
)
|
|
AND (
|
|
is_shop_bet = sqlc.narg('is_shop_bet')
|
|
OR sqlc.narg('is_shop_bet') IS NULL
|
|
)
|
|
AND (
|
|
company_id = sqlc.narg('company_id')
|
|
OR sqlc.narg('company_id') IS NULL
|
|
)
|
|
AND (
|
|
status = sqlc.narg('status')
|
|
OR sqlc.narg('status') IS NULL
|
|
)
|
|
AND (
|
|
cashed_out = sqlc.narg('cashed_out')
|
|
OR sqlc.narg('cashed_out') IS NULL
|
|
)
|
|
AND (
|
|
full_name ILIKE '%' || sqlc.narg('query') || '%'
|
|
OR phone_number ILIKE '%' || sqlc.narg('query') || '%'
|
|
OR sqlc.narg('query') IS NULL
|
|
)
|
|
AND (
|
|
created_at > sqlc.narg('created_before')
|
|
OR sqlc.narg('created_before') IS NULL
|
|
)
|
|
AND (
|
|
created_at < sqlc.narg('created_after')
|
|
OR sqlc.narg('created_after') IS NULL
|
|
)
|
|
LIMIT sqlc.narg('limit') OFFSET sqlc.narg('offset');
|
|
-- name: GetTotalBets :one
|
|
SELECT COUNT(*)
|
|
FROM bets
|
|
wHERE (
|
|
user_id = sqlc.narg('user_id')
|
|
OR sqlc.narg('user_id') IS NULL
|
|
)
|
|
AND (
|
|
is_shop_bet = sqlc.narg('is_shop_bet')
|
|
OR sqlc.narg('is_shop_bet') IS NULL
|
|
)
|
|
AND (
|
|
company_id = sqlc.narg('company_id')
|
|
OR sqlc.narg('company_id') IS NULL
|
|
)
|
|
AND (
|
|
status = sqlc.narg('status')
|
|
OR sqlc.narg('status') IS NULL
|
|
)
|
|
AND (
|
|
cashed_out = sqlc.narg('cashed_out')
|
|
OR sqlc.narg('cashed_out') IS NULL
|
|
)
|
|
AND (
|
|
full_name ILIKE '%' || sqlc.narg('query') || '%'
|
|
OR phone_number ILIKE '%' || sqlc.narg('query') || '%'
|
|
OR sqlc.narg('query') IS NULL
|
|
)
|
|
AND (
|
|
created_at > sqlc.narg('created_before')
|
|
OR sqlc.narg('created_before') IS NULL
|
|
)
|
|
AND (
|
|
created_at < sqlc.narg('created_after')
|
|
OR sqlc.narg('created_after') IS NULL
|
|
);
|
|
-- name: GetBetByID :one
|
|
SELECT *
|
|
FROM bet_with_outcomes
|
|
WHERE id = $1;
|
|
-- name: GetBetByUserID :many
|
|
SELECT *
|
|
FROM bet_with_outcomes
|
|
WHERE user_id = $1;
|
|
-- name: GetBetByFastCode :one
|
|
SELECT *
|
|
FROM bet_with_outcomes
|
|
WHERE fast_code = $1
|
|
LIMIT 1;
|
|
-- name: GetBetsForCashback :many
|
|
SELECT *
|
|
FROM bet_with_outcomes
|
|
WHERE status = 2
|
|
AND processed = false;
|
|
-- name: GetBetOutcomeViewByEventID :many
|
|
SELECT bet_outcomes.*,
|
|
users.first_name,
|
|
users.last_name,
|
|
bets.amount,
|
|
bets.total_odds
|
|
FROM bet_outcomes
|
|
JOIN bets ON bets.id = bet_outcomes.bet_id
|
|
JOIN users ON bets.user_id = users.id
|
|
WHERE bet_outcomes.event_id = $1
|
|
AND (
|
|
bets.company_id = sqlc.narg('company_id')
|
|
OR sqlc.narg('company_id') IS NULL
|
|
)
|
|
AND (
|
|
bet_outcomes.status = sqlc.narg('filter_status')
|
|
OR sqlc.narg('filter_status') IS NULL
|
|
)
|
|
LIMIT sqlc.narg('limit') OFFSET sqlc.narg('offset');
|
|
-- name: TotalBetOutcomeViewByEventID :one
|
|
SELECT count(*)
|
|
FROM bet_outcomes
|
|
JOIN bets ON bets.id = bet_outcomes.bet_id
|
|
WHERE bet_outcomes.event_id = $1
|
|
AND (
|
|
bets.company_id = sqlc.narg('company_id')
|
|
OR sqlc.narg('company_id') IS NULL
|
|
)
|
|
AND (
|
|
bet_outcomes.status = sqlc.narg('filter_status')
|
|
OR sqlc.narg('filter_status') IS NULL
|
|
);
|
|
-- name: GetBetOutcomeByEventID :many
|
|
SELECT *
|
|
FROM bet_outcomes
|
|
WHERE (event_id = $1)
|
|
AND (
|
|
status = sqlc.narg('filter_status')
|
|
OR sqlc.narg('filter_status') IS NULL
|
|
OR status = sqlc.narg('filter_status_2')
|
|
OR sqlc.narg('filter_status_2') IS NULL
|
|
);
|
|
-- name: GetBetOutcomeByBetID :many
|
|
SELECT *
|
|
FROM bet_outcomes
|
|
WHERE bet_id = $1;
|
|
-- name: GetBetOutcomeCountByOddID :one
|
|
SELECT COUNT(*)
|
|
FROM bet_outcomes
|
|
WHERE odd_id = $1;
|
|
-- name: GetBetCountByUserID :one
|
|
SELECT COUNT(*)
|
|
FROM bets
|
|
WHERE user_id = $1
|
|
AND outcomes_hash = $2;
|
|
-- name: GetBetCountByOutcomesHash :one
|
|
SELECT COUNT(*)
|
|
FROM bets
|
|
WHERE outcomes_hash = $1;
|
|
-- name: UpdateCashOut :exec
|
|
UPDATE bets
|
|
SET cashed_out = $2,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = $1;
|
|
-- name: UpdateBetOutcomeStatus :one
|
|
UPDATE bet_outcomes
|
|
SET status = $1
|
|
WHERE id = $2
|
|
RETURNING *;
|
|
-- name: UpdateBetOutcomeStatusByBetID :one
|
|
UPDATE bet_outcomes
|
|
SET status = $1
|
|
WHERE bet_id = $2
|
|
RETURNING *;
|
|
-- name: UpdateBetOutcomeStatusForEvent :many
|
|
UPDATE bet_outcomes
|
|
SEt status = $1
|
|
WHERE event_id = $2
|
|
RETURNING *;
|
|
-- name: UpdateBetOutcomeStatusForOddID :many
|
|
UPDATE bet_outcomes
|
|
SEt status = $1
|
|
WHERE odd_id = $2
|
|
RETURNING *;
|
|
-- name: UpdateStatus :exec
|
|
UPDATE bets
|
|
SET status = $1,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = $2;
|
|
-- name: UpdateBetWithCashback :exec
|
|
UPDATE bets
|
|
SET processed = $1
|
|
WHERE id = $2;
|
|
-- name: DeleteBet :exec
|
|
DELETE FROM bets
|
|
WHERE id = $1;
|
|
-- name: DeleteBetOutcome :exec
|
|
DELETE FROM bet_outcomes
|
|
WHERE bet_id = $1; |