Files
geo/server/internal/tenant/repository/queries/quota.sql
T
root b31d8d0096 feat(migrations): Harden task audit tracking and optimize article templates
- Added migration to harden task audit tracking by modifying audit_logs and related tables.
- Introduced operator_id to several tables for better tracking of actions.
- Updated article_templates with new prompt templates for various article types, enhancing content generation.
- Created prompt_rules and schedule_tasks tables to manage content generation rules and scheduling.
- Added foreign key constraints to articles for better data integrity.
2026-04-02 00:31:28 +08:00

31 lines
1.5 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);
-- 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);