Yimaru-BackEnd/db/query/direct_deposit.sql

65 lines
1.3 KiB
SQL

-- name: CreateDirectDeposit :one
INSERT INTO direct_deposits (
customer_id, wallet_id, bank_name, account_number,
account_holder, amount, reference_number,
transfer_screenshot, status
) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,'PENDING')
RETURNING *;
-- name: GetDirectDepositByID :one
SELECT *
FROM direct_deposits
WHERE id = $1;
-- name: DeleteDirectDeposit :exec
DELETE FROM direct_deposits
WHERE id = $1;
-- name: GetDirectDepositsByStatus :many
SELECT
id,
customer_id,
wallet_id,
bank_name,
account_number,
account_holder,
amount,
reference_number,
transfer_screenshot,
status,
created_at,
approved_by,
approved_at,
rejection_reason
FROM direct_deposits
WHERE status = $1
ORDER BY created_at DESC
LIMIT $2 OFFSET $3;
-- name: CountDirectDepositsByStatus :one
SELECT COUNT(*)
FROM direct_deposits
WHERE status = $1;
-- name: ApproveDirectDeposit :exec
UPDATE direct_deposits
SET
status = 'APPROVED',
approved_by = $2,
approved_at = NOW()
WHERE
id = $1
AND status = 'PENDING';
-- name: RejectDirectDeposit :exec
UPDATE direct_deposits
SET
status = 'REJECTED',
approved_by = $2, -- still track the admin who took final action
approved_at = NOW(),
rejection_reason = $3
WHERE
id = $1
AND status = 'PENDING';