87 lines
2.2 KiB
SQL
87 lines
2.2 KiB
SQL
-- name: CreateReferral :one
|
|
INSERT INTO referrals (
|
|
referral_code,
|
|
referrer_id,
|
|
company_id,
|
|
status,
|
|
reward_amount,
|
|
expires_at
|
|
)
|
|
VALUES ($1, $2, $3, $4, $5, $6)
|
|
RETURNING *;
|
|
-- name: GetReferralByCode :one
|
|
SELECT *
|
|
FROM referrals
|
|
WHERE referral_code = $1;
|
|
-- name: UpdateReferral :one
|
|
UPDATE referrals
|
|
SET referred_id = $2,
|
|
status = $3,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = $1
|
|
RETURNING *;
|
|
-- name: UpdateReferralCode :exec
|
|
UPDATE users
|
|
SET referral_code = $2,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = $1;
|
|
-- name: GetReferralStats :one
|
|
SELECT COUNT(*) AS total_referrals,
|
|
COUNT(
|
|
CASE
|
|
WHEN status = 'COMPLETED' THEN 1
|
|
END
|
|
) AS completed_referrals,
|
|
COALESCE(SUM(reward_amount), 0) AS total_reward_earned,
|
|
COALESCE(
|
|
SUM(
|
|
CASE
|
|
WHEN status = 'PENDING' THEN reward_amount
|
|
END
|
|
),
|
|
0
|
|
) AS pending_rewards
|
|
FROM referrals
|
|
WHERE referrer_id = $1
|
|
AND company_id = $2;
|
|
-- name: GetReferralSettings :one
|
|
SELECT *
|
|
FROM referral_settings
|
|
LIMIT 1;
|
|
-- name: UpdateReferralSettings :one
|
|
UPDATE referral_settings
|
|
SET referral_reward_amount = $2,
|
|
cashback_percentage = $3,
|
|
bet_referral_bonus_percentage = $4,
|
|
max_referrals = $5,
|
|
expires_after_days = $6,
|
|
updated_by = $7,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = $1
|
|
RETURNING *;
|
|
-- name: CreateReferralSettings :one
|
|
INSERT INTO referral_settings (
|
|
referral_reward_amount,
|
|
cashback_percentage,
|
|
max_referrals,
|
|
bet_referral_bonus_percentage,
|
|
expires_after_days,
|
|
updated_by
|
|
)
|
|
VALUES ($1, $2, $3, $4, $5, $6)
|
|
RETURNING *;
|
|
-- name: GetReferralByReferredID :one
|
|
SELECT *
|
|
FROM referrals
|
|
WHERE referred_id = $1
|
|
LIMIT 1;
|
|
-- name: GetActiveReferralByReferrerID :one
|
|
SELECT *
|
|
FROM referrals
|
|
WHERE referrer_id = $1
|
|
AND status = 'PENDING'
|
|
LIMIT 1;
|
|
-- name: GetReferralCountByID :one
|
|
SELECT COUNT(*)
|
|
FROM referrals
|
|
WHERE referrer_id = $1; |