66 lines
1.5 KiB
SQL
66 lines
1.5 KiB
SQL
-- name: CreateReferral :one
|
|
INSERT INTO referrals (
|
|
referral_code,
|
|
referrer_id,
|
|
status,
|
|
reward_amount,
|
|
expires_at
|
|
) VALUES (
|
|
$1, $2, $3, $4, $5
|
|
) 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: 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;
|
|
|
|
-- name: GetReferralSettings :one
|
|
SELECT * FROM referral_settings
|
|
WHERE id = 'default'
|
|
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;
|