// Code generated by sqlc. DO NOT EDIT. // versions: // sqlc v1.29.0 // source: transfer.sql package dbgen import ( "context" "github.com/jackc/pgx/v5/pgtype" ) const CreateTransfer = `-- name: CreateTransfer :one INSERT INTO wallet_transfer ( amount, message, type, receiver_wallet_id, sender_wallet_id, cashier_id, verified, reference_number, session_id, status, payment_method ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) RETURNING id, amount, message, type, receiver_wallet_id, sender_wallet_id, cashier_id, verified, reference_number, session_id, status, payment_method, created_at, updated_at ` type CreateTransferParams struct { Amount pgtype.Int8 `json:"amount"` Message string `json:"message"` Type pgtype.Text `json:"type"` ReceiverWalletID pgtype.Int8 `json:"receiver_wallet_id"` SenderWalletID pgtype.Int8 `json:"sender_wallet_id"` CashierID pgtype.Int8 `json:"cashier_id"` Verified pgtype.Bool `json:"verified"` ReferenceNumber string `json:"reference_number"` SessionID pgtype.Text `json:"session_id"` Status pgtype.Text `json:"status"` PaymentMethod pgtype.Text `json:"payment_method"` } func (q *Queries) CreateTransfer(ctx context.Context, arg CreateTransferParams) (WalletTransfer, error) { row := q.db.QueryRow(ctx, CreateTransfer, arg.Amount, arg.Message, arg.Type, arg.ReceiverWalletID, arg.SenderWalletID, arg.CashierID, arg.Verified, arg.ReferenceNumber, arg.SessionID, arg.Status, arg.PaymentMethod, ) var i WalletTransfer err := row.Scan( &i.ID, &i.Amount, &i.Message, &i.Type, &i.ReceiverWalletID, &i.SenderWalletID, &i.CashierID, &i.Verified, &i.ReferenceNumber, &i.SessionID, &i.Status, &i.PaymentMethod, &i.CreatedAt, &i.UpdatedAt, ) return i, err } const GetAllTransfers = `-- name: GetAllTransfers :many SELECT id, amount, message, type, receiver_wallet_id, sender_wallet_id, cashier_id, verified, reference_number, session_id, status, payment_method, created_at, updated_at, first_name, last_name, phone_number FROM wallet_transfer_details ` func (q *Queries) GetAllTransfers(ctx context.Context) ([]WalletTransferDetail, error) { rows, err := q.db.Query(ctx, GetAllTransfers) if err != nil { return nil, err } defer rows.Close() var items []WalletTransferDetail for rows.Next() { var i WalletTransferDetail if err := rows.Scan( &i.ID, &i.Amount, &i.Message, &i.Type, &i.ReceiverWalletID, &i.SenderWalletID, &i.CashierID, &i.Verified, &i.ReferenceNumber, &i.SessionID, &i.Status, &i.PaymentMethod, &i.CreatedAt, &i.UpdatedAt, &i.FirstName, &i.LastName, &i.PhoneNumber, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const GetTransferByID = `-- name: GetTransferByID :one SELECT id, amount, message, type, receiver_wallet_id, sender_wallet_id, cashier_id, verified, reference_number, session_id, status, payment_method, created_at, updated_at, first_name, last_name, phone_number FROM wallet_transfer_details WHERE id = $1 ` func (q *Queries) GetTransferByID(ctx context.Context, id int64) (WalletTransferDetail, error) { row := q.db.QueryRow(ctx, GetTransferByID, id) var i WalletTransferDetail err := row.Scan( &i.ID, &i.Amount, &i.Message, &i.Type, &i.ReceiverWalletID, &i.SenderWalletID, &i.CashierID, &i.Verified, &i.ReferenceNumber, &i.SessionID, &i.Status, &i.PaymentMethod, &i.CreatedAt, &i.UpdatedAt, &i.FirstName, &i.LastName, &i.PhoneNumber, ) return i, err } const GetTransferByReference = `-- name: GetTransferByReference :one SELECT id, amount, message, type, receiver_wallet_id, sender_wallet_id, cashier_id, verified, reference_number, session_id, status, payment_method, created_at, updated_at, first_name, last_name, phone_number FROM wallet_transfer_details WHERE reference_number = $1 ` func (q *Queries) GetTransferByReference(ctx context.Context, referenceNumber string) (WalletTransferDetail, error) { row := q.db.QueryRow(ctx, GetTransferByReference, referenceNumber) var i WalletTransferDetail err := row.Scan( &i.ID, &i.Amount, &i.Message, &i.Type, &i.ReceiverWalletID, &i.SenderWalletID, &i.CashierID, &i.Verified, &i.ReferenceNumber, &i.SessionID, &i.Status, &i.PaymentMethod, &i.CreatedAt, &i.UpdatedAt, &i.FirstName, &i.LastName, &i.PhoneNumber, ) return i, err } const GetTransferStats = `-- name: GetTransferStats :one SELECT COUNT(*) AS total_transfers, COUNT(*) FILTER ( WHERE type = 'deposit' ) AS total_deposits, COUNT(*) FILTER ( WHERE type = 'withdraw' ) AS total_withdraw, COUNT(*) FILTER ( WHERE type = 'wallet' ) AS total_wallet_to_wallet FROM wallet_transfer WHERE sender_wallet_id = $1 OR receiver_wallet_id = $1 ` type GetTransferStatsRow struct { TotalTransfers int64 `json:"total_transfers"` TotalDeposits int64 `json:"total_deposits"` TotalWithdraw int64 `json:"total_withdraw"` TotalWalletToWallet int64 `json:"total_wallet_to_wallet"` } func (q *Queries) GetTransferStats(ctx context.Context, senderWalletID pgtype.Int8) (GetTransferStatsRow, error) { row := q.db.QueryRow(ctx, GetTransferStats, senderWalletID) var i GetTransferStatsRow err := row.Scan( &i.TotalTransfers, &i.TotalDeposits, &i.TotalWithdraw, &i.TotalWalletToWallet, ) return i, err } const GetTransfersByWallet = `-- name: GetTransfersByWallet :many SELECT id, amount, message, type, receiver_wallet_id, sender_wallet_id, cashier_id, verified, reference_number, session_id, status, payment_method, created_at, updated_at, first_name, last_name, phone_number FROM wallet_transfer_details WHERE receiver_wallet_id = $1 OR sender_wallet_id = $1 ` func (q *Queries) GetTransfersByWallet(ctx context.Context, receiverWalletID pgtype.Int8) ([]WalletTransferDetail, error) { rows, err := q.db.Query(ctx, GetTransfersByWallet, receiverWalletID) if err != nil { return nil, err } defer rows.Close() var items []WalletTransferDetail for rows.Next() { var i WalletTransferDetail if err := rows.Scan( &i.ID, &i.Amount, &i.Message, &i.Type, &i.ReceiverWalletID, &i.SenderWalletID, &i.CashierID, &i.Verified, &i.ReferenceNumber, &i.SessionID, &i.Status, &i.PaymentMethod, &i.CreatedAt, &i.UpdatedAt, &i.FirstName, &i.LastName, &i.PhoneNumber, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const GetWalletTransactionsInRange = `-- name: GetWalletTransactionsInRange :many SELECT type, COUNT(*) as count, SUM(amount) as total_amount FROM wallet_transfer WHERE created_at BETWEEN $1 AND $2 GROUP BY type ` type GetWalletTransactionsInRangeParams struct { CreatedAt pgtype.Timestamp `json:"created_at"` CreatedAt_2 pgtype.Timestamp `json:"created_at_2"` } type GetWalletTransactionsInRangeRow struct { Type pgtype.Text `json:"type"` Count int64 `json:"count"` TotalAmount int64 `json:"total_amount"` } func (q *Queries) GetWalletTransactionsInRange(ctx context.Context, arg GetWalletTransactionsInRangeParams) ([]GetWalletTransactionsInRangeRow, error) { rows, err := q.db.Query(ctx, GetWalletTransactionsInRange, arg.CreatedAt, arg.CreatedAt_2) if err != nil { return nil, err } defer rows.Close() var items []GetWalletTransactionsInRangeRow for rows.Next() { var i GetWalletTransactionsInRangeRow if err := rows.Scan(&i.Type, &i.Count, &i.TotalAmount); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const UpdateTransferStatus = `-- name: UpdateTransferStatus :exec UPDATE wallet_transfer SET status = $1, updated_at = CURRENT_TIMESTAMP WHERE id = $2 ` type UpdateTransferStatusParams struct { Status pgtype.Text `json:"status"` ID int64 `json:"id"` } func (q *Queries) UpdateTransferStatus(ctx context.Context, arg UpdateTransferStatusParams) error { _, err := q.db.Exec(ctx, UpdateTransferStatus, arg.Status, arg.ID) return err } const UpdateTransferVerification = `-- name: UpdateTransferVerification :exec UPDATE wallet_transfer SET verified = $1, updated_at = CURRENT_TIMESTAMP WHERE id = $2 ` type UpdateTransferVerificationParams struct { Verified pgtype.Bool `json:"verified"` ID int64 `json:"id"` } func (q *Queries) UpdateTransferVerification(ctx context.Context, arg UpdateTransferVerificationParams) error { _, err := q.db.Exec(ctx, UpdateTransferVerification, arg.Verified, arg.ID) return err }