Files
member-console/internal/entitlements/numeric_entitlement_usage.sql.go
T
cgalo5758 8e3c68c6be Make UI surfaces honestly reflect system state
- Add deployment-name branding to titles, mastheads, and OG tags
- Share one grant delivery-state query with lineage across grants
  surfaces
- Show pool status/usage, org owners, and config readiness
- Make billing views projection-aware with recency and sync vocabulary
- Guard FedWiki creation without domains and render route-aware 404s
2026-08-23 01:45:52 -05:00

198 lines
6.1 KiB
Go

// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.29.0
// source: numeric_entitlement_usage.sql
package entitlements
import (
"context"
"database/sql"
)
const atomicDecrementUsage = `-- name: AtomicDecrementUsage :execresult
UPDATE core.numeric_entitlement_usage neu
SET current_usage = GREATEST(neu.current_usage - 1, 0)
WHERE neu.pool_id IN (
SELECT pa.pool_id FROM core.pool_assignments pa
WHERE pa.workspace_id = $1 AND pa.is_primary = TRUE AND pa.status = 'active'
)
AND neu.resource_key = $2
`
type AtomicDecrementUsageParams struct {
WorkspaceID string `json:"workspace_id"`
ResourceKey string `json:"resource_key"`
}
func (q *Queries) AtomicDecrementUsage(ctx context.Context, arg AtomicDecrementUsageParams) (sql.Result, error) {
return q.db.ExecContext(ctx, atomicDecrementUsage, arg.WorkspaceID, arg.ResourceKey)
}
const atomicIncrementUsage = `-- name: AtomicIncrementUsage :execresult
UPDATE core.numeric_entitlement_usage neu
SET current_usage = neu.current_usage + 1
WHERE neu.pool_id IN (
SELECT pa.pool_id FROM core.pool_assignments pa
WHERE pa.workspace_id = $1 AND pa.is_primary = TRUE AND pa.status = 'active'
)
AND neu.resource_key = $2
AND neu.current_usage < (
SELECT ne.resource_limit FROM core.numeric_entitlements ne
WHERE ne.entitlement_id = neu.entitlement_id
)
`
type AtomicIncrementUsageParams struct {
WorkspaceID string `json:"workspace_id"`
ResourceKey string `json:"resource_key"`
}
func (q *Queries) AtomicIncrementUsage(ctx context.Context, arg AtomicIncrementUsageParams) (sql.Result, error) {
return q.db.ExecContext(ctx, atomicIncrementUsage, arg.WorkspaceID, arg.ResourceKey)
}
const createNumericEntitlementUsage = `-- name: CreateNumericEntitlementUsage :one
INSERT INTO core.numeric_entitlement_usage (entitlement_id, pool_id, resource_key)
VALUES ($1, $2, $3)
RETURNING usage_id, entitlement_id, pool_id, resource_key, current_usage, current_period_start, current_period_end, last_reset_at, created_at, updated_at
`
type CreateNumericEntitlementUsageParams struct {
EntitlementID string `json:"entitlement_id"`
PoolID string `json:"pool_id"`
ResourceKey string `json:"resource_key"`
}
func (q *Queries) CreateNumericEntitlementUsage(ctx context.Context, arg CreateNumericEntitlementUsageParams) (NumericEntitlementUsage, error) {
row := q.db.QueryRowContext(ctx, createNumericEntitlementUsage, arg.EntitlementID, arg.PoolID, arg.ResourceKey)
var i NumericEntitlementUsage
err := row.Scan(
&i.UsageID,
&i.EntitlementID,
&i.PoolID,
&i.ResourceKey,
&i.CurrentUsage,
&i.CurrentPeriodStart,
&i.CurrentPeriodEnd,
&i.LastResetAt,
&i.CreatedAt,
&i.UpdatedAt,
)
return i, err
}
const getUsageByPoolAndResource = `-- name: GetUsageByPoolAndResource :one
SELECT usage_id, entitlement_id, pool_id, resource_key, current_usage, current_period_start, current_period_end, last_reset_at, created_at, updated_at FROM core.numeric_entitlement_usage
WHERE pool_id = $1 AND resource_key = $2
`
type GetUsageByPoolAndResourceParams struct {
PoolID string `json:"pool_id"`
ResourceKey string `json:"resource_key"`
}
func (q *Queries) GetUsageByPoolAndResource(ctx context.Context, arg GetUsageByPoolAndResourceParams) (NumericEntitlementUsage, error) {
row := q.db.QueryRowContext(ctx, getUsageByPoolAndResource, arg.PoolID, arg.ResourceKey)
var i NumericEntitlementUsage
err := row.Scan(
&i.UsageID,
&i.EntitlementID,
&i.PoolID,
&i.ResourceKey,
&i.CurrentUsage,
&i.CurrentPeriodStart,
&i.CurrentPeriodEnd,
&i.LastResetAt,
&i.CreatedAt,
&i.UpdatedAt,
)
return i, err
}
const listNumericEntitlementUsageByPoolID = `-- name: ListNumericEntitlementUsageByPoolID :many
SELECT usage_id, entitlement_id, pool_id, resource_key, current_usage, current_period_start, current_period_end, last_reset_at, created_at, updated_at FROM core.numeric_entitlement_usage
WHERE pool_id = $1
ORDER BY resource_key ASC
`
func (q *Queries) ListNumericEntitlementUsageByPoolID(ctx context.Context, poolID string) ([]NumericEntitlementUsage, error) {
rows, err := q.db.QueryContext(ctx, listNumericEntitlementUsageByPoolID, poolID)
if err != nil {
return nil, err
}
defer rows.Close()
items := []NumericEntitlementUsage{}
for rows.Next() {
var i NumericEntitlementUsage
if err := rows.Scan(
&i.UsageID,
&i.EntitlementID,
&i.PoolID,
&i.ResourceKey,
&i.CurrentUsage,
&i.CurrentPeriodStart,
&i.CurrentPeriodEnd,
&i.LastResetAt,
&i.CreatedAt,
&i.UpdatedAt,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const listPoolUsageWithLimitsByPoolID = `-- name: ListPoolUsageWithLimitsByPoolID :many
SELECT
neu.resource_key,
neu.current_usage,
ne.resource_limit
FROM core.numeric_entitlement_usage neu
JOIN core.numeric_entitlements ne ON ne.entitlement_id = neu.entitlement_id
WHERE neu.pool_id = $1
ORDER BY neu.resource_key ASC
`
type ListPoolUsageWithLimitsByPoolIDRow struct {
ResourceKey string `json:"resource_key"`
CurrentUsage int64 `json:"current_usage"`
ResourceLimit int64 `json:"resource_limit"`
}
// Per-resource usage counters for a pool joined to their materialized
// limit (used vs limit per resource key), for the org-detail pools panel
// (ux-honest-surfaces: "pool status and usage are visible on the
// organization view"). A counter row exists only under a materialized
// numeric entitlement (invariant 9, resource-pools card), so the JOIN
// never orphans.
func (q *Queries) ListPoolUsageWithLimitsByPoolID(ctx context.Context, poolID string) ([]ListPoolUsageWithLimitsByPoolIDRow, error) {
rows, err := q.db.QueryContext(ctx, listPoolUsageWithLimitsByPoolID, poolID)
if err != nil {
return nil, err
}
defer rows.Close()
items := []ListPoolUsageWithLimitsByPoolIDRow{}
for rows.Next() {
var i ListPoolUsageWithLimitsByPoolIDRow
if err := rows.Scan(&i.ResourceKey, &i.CurrentUsage, &i.ResourceLimit); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}