01fa2b8309
Desktop Client Build / Resolve Build Metadata (push) Successful in 28s
Frontend CI / Frontend (push) Successful in 3m57s
Backend CI / Backend (push) Successful in 17m3s
Desktop Client Build / Build Desktop Client (push) Successful in 26m8s
Desktop Client Build / Publish Client Artifacts to NAS (push) Successful in 51s
31 lines
1.6 KiB
SQL
31 lines
1.6 KiB
SQL
-- name: GetCurrentBalance :one
|
|
SELECT COALESCE(
|
|
(SELECT balance_after FROM tenant_quota_ledgers
|
|
WHERE tenant_id = sqlc.arg(tenant_id) AND quota_type = sqlc.arg(quota_type)
|
|
ORDER BY created_at DESC LIMIT 1), 0
|
|
)::INT AS balance;
|
|
|
|
-- name: InsertQuotaLedger :one
|
|
INSERT INTO tenant_quota_ledgers (tenant_id, operator_id, quota_type, delta, balance_after, reason, reference_type, reference_id)
|
|
VALUES (sqlc.arg(tenant_id), sqlc.arg(operator_id), sqlc.arg(quota_type), sqlc.arg(delta), sqlc.arg(balance_after),
|
|
sqlc.arg(reason), sqlc.arg(reference_type), sqlc.arg(reference_id))
|
|
RETURNING id;
|
|
|
|
-- name: CreateQuotaReservation :one
|
|
INSERT INTO quota_reservations (tenant_id, operator_id, quota_type, resource_type, resource_id, reserved_amount, status, expire_at)
|
|
VALUES (sqlc.arg(tenant_id), sqlc.arg(operator_id), sqlc.arg(quota_type), sqlc.arg(resource_type), sqlc.arg(resource_id),
|
|
sqlc.arg(reserved_amount), 'pending', sqlc.arg(expire_at))
|
|
RETURNING id;
|
|
|
|
-- name: UpdateQuotaReservationResource :exec
|
|
UPDATE quota_reservations SET resource_id = sqlc.arg(resource_id), updated_at = NOW()
|
|
WHERE id = sqlc.arg(id) AND tenant_id = sqlc.arg(tenant_id);
|
|
|
|
-- name: ConfirmReservation :exec
|
|
UPDATE quota_reservations SET status = 'confirmed', consumed_amount = reserved_amount, updated_at = NOW()
|
|
WHERE id = sqlc.arg(id) AND tenant_id = sqlc.arg(tenant_id) AND status = 'pending';
|
|
|
|
-- name: RefundReservation :exec
|
|
UPDATE quota_reservations SET status = 'refunded', refunded_amount = reserved_amount, updated_at = NOW()
|
|
WHERE id = sqlc.arg(id) AND tenant_id = sqlc.arg(tenant_id) AND status = 'pending';
|