-- 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 *; -- name: GetAllTransfers :many SELECT * FROM wallet_transfer_details; -- name: GetTransfersByWallet :many SELECT * FROM wallet_transfer_details WHERE receiver_wallet_id = $1 OR sender_wallet_id = $1; -- name: GetTransferByID :one SELECT * FROM wallet_transfer_details WHERE id = $1; -- name: GetTransferByReference :one SELECT * FROM wallet_transfer_details WHERE reference_number = $1; -- name: UpdateTransferVerification :exec UPDATE wallet_transfer SET verified = $1, updated_at = CURRENT_TIMESTAMP WHERE id = $2; -- name: UpdateTransferStatus :exec UPDATE wallet_transfer SET status = $1, updated_at = CURRENT_TIMESTAMP WHERE id = $2; -- 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;