// 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 entitlements.numeric_entitlement_usage neu SET current_usage = GREATEST(neu.current_usage - 1, 0) WHERE neu.pool_id IN ( SELECT pa.pool_id FROM entitlements.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 entitlements.numeric_entitlement_usage neu SET current_usage = neu.current_usage + 1 WHERE neu.pool_id IN ( SELECT pa.pool_id FROM entitlements.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 entitlements.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 entitlements.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 entitlements.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 entitlements.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 }