368 lines
10 KiB
Go
368 lines
10 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.29.0
|
|
// source: referal.sql
|
|
|
|
package dbgen
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
)
|
|
|
|
const CreateReferral = `-- 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 id, company_id, referral_code, referrer_id, referred_id, status, reward_amount, cashback_amount, created_at, updated_at, expires_at
|
|
`
|
|
|
|
type CreateReferralParams struct {
|
|
ReferralCode string `json:"referral_code"`
|
|
ReferrerID int64 `json:"referrer_id"`
|
|
CompanyID int64 `json:"company_id"`
|
|
Status Referralstatus `json:"status"`
|
|
RewardAmount pgtype.Numeric `json:"reward_amount"`
|
|
ExpiresAt pgtype.Timestamptz `json:"expires_at"`
|
|
}
|
|
|
|
func (q *Queries) CreateReferral(ctx context.Context, arg CreateReferralParams) (Referral, error) {
|
|
row := q.db.QueryRow(ctx, CreateReferral,
|
|
arg.ReferralCode,
|
|
arg.ReferrerID,
|
|
arg.CompanyID,
|
|
arg.Status,
|
|
arg.RewardAmount,
|
|
arg.ExpiresAt,
|
|
)
|
|
var i Referral
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.CompanyID,
|
|
&i.ReferralCode,
|
|
&i.ReferrerID,
|
|
&i.ReferredID,
|
|
&i.Status,
|
|
&i.RewardAmount,
|
|
&i.CashbackAmount,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.ExpiresAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const CreateReferralSettings = `-- 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 id, referral_reward_amount, cashback_percentage, bet_referral_bonus_percentage, max_referrals, expires_after_days, updated_by, created_at, updated_at, version
|
|
`
|
|
|
|
type CreateReferralSettingsParams struct {
|
|
ReferralRewardAmount pgtype.Numeric `json:"referral_reward_amount"`
|
|
CashbackPercentage pgtype.Numeric `json:"cashback_percentage"`
|
|
MaxReferrals int32 `json:"max_referrals"`
|
|
BetReferralBonusPercentage pgtype.Numeric `json:"bet_referral_bonus_percentage"`
|
|
ExpiresAfterDays int32 `json:"expires_after_days"`
|
|
UpdatedBy string `json:"updated_by"`
|
|
}
|
|
|
|
func (q *Queries) CreateReferralSettings(ctx context.Context, arg CreateReferralSettingsParams) (ReferralSetting, error) {
|
|
row := q.db.QueryRow(ctx, CreateReferralSettings,
|
|
arg.ReferralRewardAmount,
|
|
arg.CashbackPercentage,
|
|
arg.MaxReferrals,
|
|
arg.BetReferralBonusPercentage,
|
|
arg.ExpiresAfterDays,
|
|
arg.UpdatedBy,
|
|
)
|
|
var i ReferralSetting
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.ReferralRewardAmount,
|
|
&i.CashbackPercentage,
|
|
&i.BetReferralBonusPercentage,
|
|
&i.MaxReferrals,
|
|
&i.ExpiresAfterDays,
|
|
&i.UpdatedBy,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.Version,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const GetActiveReferralByReferrerID = `-- name: GetActiveReferralByReferrerID :one
|
|
SELECT id, company_id, referral_code, referrer_id, referred_id, status, reward_amount, cashback_amount, created_at, updated_at, expires_at
|
|
FROM referrals
|
|
WHERE referrer_id = $1
|
|
AND status = 'PENDING'
|
|
LIMIT 1
|
|
`
|
|
|
|
func (q *Queries) GetActiveReferralByReferrerID(ctx context.Context, referrerID int64) (Referral, error) {
|
|
row := q.db.QueryRow(ctx, GetActiveReferralByReferrerID, referrerID)
|
|
var i Referral
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.CompanyID,
|
|
&i.ReferralCode,
|
|
&i.ReferrerID,
|
|
&i.ReferredID,
|
|
&i.Status,
|
|
&i.RewardAmount,
|
|
&i.CashbackAmount,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.ExpiresAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const GetReferralByCode = `-- name: GetReferralByCode :one
|
|
SELECT id, company_id, referral_code, referrer_id, referred_id, status, reward_amount, cashback_amount, created_at, updated_at, expires_at
|
|
FROM referrals
|
|
WHERE referral_code = $1
|
|
`
|
|
|
|
func (q *Queries) GetReferralByCode(ctx context.Context, referralCode string) (Referral, error) {
|
|
row := q.db.QueryRow(ctx, GetReferralByCode, referralCode)
|
|
var i Referral
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.CompanyID,
|
|
&i.ReferralCode,
|
|
&i.ReferrerID,
|
|
&i.ReferredID,
|
|
&i.Status,
|
|
&i.RewardAmount,
|
|
&i.CashbackAmount,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.ExpiresAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const GetReferralByReferredID = `-- name: GetReferralByReferredID :one
|
|
SELECT id, company_id, referral_code, referrer_id, referred_id, status, reward_amount, cashback_amount, created_at, updated_at, expires_at
|
|
FROM referrals
|
|
WHERE referred_id = $1
|
|
LIMIT 1
|
|
`
|
|
|
|
func (q *Queries) GetReferralByReferredID(ctx context.Context, referredID pgtype.Int8) (Referral, error) {
|
|
row := q.db.QueryRow(ctx, GetReferralByReferredID, referredID)
|
|
var i Referral
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.CompanyID,
|
|
&i.ReferralCode,
|
|
&i.ReferrerID,
|
|
&i.ReferredID,
|
|
&i.Status,
|
|
&i.RewardAmount,
|
|
&i.CashbackAmount,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.ExpiresAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const GetReferralCountByID = `-- name: GetReferralCountByID :one
|
|
SELECT COUNT(*)
|
|
FROM referrals
|
|
WHERE referrer_id = $1
|
|
`
|
|
|
|
func (q *Queries) GetReferralCountByID(ctx context.Context, referrerID int64) (int64, error) {
|
|
row := q.db.QueryRow(ctx, GetReferralCountByID, referrerID)
|
|
var count int64
|
|
err := row.Scan(&count)
|
|
return count, err
|
|
}
|
|
|
|
const GetReferralSettings = `-- name: GetReferralSettings :one
|
|
SELECT id, referral_reward_amount, cashback_percentage, bet_referral_bonus_percentage, max_referrals, expires_after_days, updated_by, created_at, updated_at, version
|
|
FROM referral_settings
|
|
LIMIT 1
|
|
`
|
|
|
|
func (q *Queries) GetReferralSettings(ctx context.Context) (ReferralSetting, error) {
|
|
row := q.db.QueryRow(ctx, GetReferralSettings)
|
|
var i ReferralSetting
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.ReferralRewardAmount,
|
|
&i.CashbackPercentage,
|
|
&i.BetReferralBonusPercentage,
|
|
&i.MaxReferrals,
|
|
&i.ExpiresAfterDays,
|
|
&i.UpdatedBy,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.Version,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const GetReferralStats = `-- 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
|
|
`
|
|
|
|
type GetReferralStatsParams struct {
|
|
ReferrerID int64 `json:"referrer_id"`
|
|
CompanyID int64 `json:"company_id"`
|
|
}
|
|
|
|
type GetReferralStatsRow struct {
|
|
TotalReferrals int64 `json:"total_referrals"`
|
|
CompletedReferrals int64 `json:"completed_referrals"`
|
|
TotalRewardEarned interface{} `json:"total_reward_earned"`
|
|
PendingRewards interface{} `json:"pending_rewards"`
|
|
}
|
|
|
|
func (q *Queries) GetReferralStats(ctx context.Context, arg GetReferralStatsParams) (GetReferralStatsRow, error) {
|
|
row := q.db.QueryRow(ctx, GetReferralStats, arg.ReferrerID, arg.CompanyID)
|
|
var i GetReferralStatsRow
|
|
err := row.Scan(
|
|
&i.TotalReferrals,
|
|
&i.CompletedReferrals,
|
|
&i.TotalRewardEarned,
|
|
&i.PendingRewards,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const UpdateReferral = `-- name: UpdateReferral :one
|
|
UPDATE referrals
|
|
SET referred_id = $2,
|
|
status = $3,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = $1
|
|
RETURNING id, company_id, referral_code, referrer_id, referred_id, status, reward_amount, cashback_amount, created_at, updated_at, expires_at
|
|
`
|
|
|
|
type UpdateReferralParams struct {
|
|
ID int64 `json:"id"`
|
|
ReferredID pgtype.Int8 `json:"referred_id"`
|
|
Status Referralstatus `json:"status"`
|
|
}
|
|
|
|
func (q *Queries) UpdateReferral(ctx context.Context, arg UpdateReferralParams) (Referral, error) {
|
|
row := q.db.QueryRow(ctx, UpdateReferral, arg.ID, arg.ReferredID, arg.Status)
|
|
var i Referral
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.CompanyID,
|
|
&i.ReferralCode,
|
|
&i.ReferrerID,
|
|
&i.ReferredID,
|
|
&i.Status,
|
|
&i.RewardAmount,
|
|
&i.CashbackAmount,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.ExpiresAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const UpdateReferralCode = `-- name: UpdateReferralCode :exec
|
|
UPDATE users
|
|
SET referral_code = $2,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = $1
|
|
`
|
|
|
|
type UpdateReferralCodeParams struct {
|
|
ID int64 `json:"id"`
|
|
ReferralCode pgtype.Text `json:"referral_code"`
|
|
}
|
|
|
|
func (q *Queries) UpdateReferralCode(ctx context.Context, arg UpdateReferralCodeParams) error {
|
|
_, err := q.db.Exec(ctx, UpdateReferralCode, arg.ID, arg.ReferralCode)
|
|
return err
|
|
}
|
|
|
|
const UpdateReferralSettings = `-- 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 id, referral_reward_amount, cashback_percentage, bet_referral_bonus_percentage, max_referrals, expires_after_days, updated_by, created_at, updated_at, version
|
|
`
|
|
|
|
type UpdateReferralSettingsParams struct {
|
|
ID int64 `json:"id"`
|
|
ReferralRewardAmount pgtype.Numeric `json:"referral_reward_amount"`
|
|
CashbackPercentage pgtype.Numeric `json:"cashback_percentage"`
|
|
BetReferralBonusPercentage pgtype.Numeric `json:"bet_referral_bonus_percentage"`
|
|
MaxReferrals int32 `json:"max_referrals"`
|
|
ExpiresAfterDays int32 `json:"expires_after_days"`
|
|
UpdatedBy string `json:"updated_by"`
|
|
}
|
|
|
|
func (q *Queries) UpdateReferralSettings(ctx context.Context, arg UpdateReferralSettingsParams) (ReferralSetting, error) {
|
|
row := q.db.QueryRow(ctx, UpdateReferralSettings,
|
|
arg.ID,
|
|
arg.ReferralRewardAmount,
|
|
arg.CashbackPercentage,
|
|
arg.BetReferralBonusPercentage,
|
|
arg.MaxReferrals,
|
|
arg.ExpiresAfterDays,
|
|
arg.UpdatedBy,
|
|
)
|
|
var i ReferralSetting
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.ReferralRewardAmount,
|
|
&i.CashbackPercentage,
|
|
&i.BetReferralBonusPercentage,
|
|
&i.MaxReferrals,
|
|
&i.ExpiresAfterDays,
|
|
&i.UpdatedBy,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.Version,
|
|
)
|
|
return i, err
|
|
}
|