The Rules section is one record table grouped by kind, Limit then Boolean, on fixed columns, edited in place: Edit opens a row's controls in their columns, Add rule opens a dense row above the table, and every change is staged into a tray that lists the deltas with Undo and applies them as one rule-change act. The reduction policy is a column of the rule beside its limit. History shows counts only. Group rows are a quiet heading rather than a divider, the maintainer's pick from four rounds of outside-model ideation. Dense rows align to the top and render each error under its control in every form family (design D16), replacing the below-row error block; the forms library gains the batch form (rows plus one tray) and the RowField dense and label-hidden options. Migration 00019 records the governing reduction policy on effect rows. Archive staged-rule-changes with its spec updates (entitlement-set- management, entitlement-set-history, entitlements, form-library, form-conventions, ui-quality-gate). Screens accepted 2026-09-19.
273 lines
7.1 KiB
Go
273 lines
7.1 KiB
Go
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Commercial
|
|
// SPDX-FileCopyrightText: 2025-2026 Christian Galo
|
|
|
|
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.29.0
|
|
// source: entitlement_sets.sql
|
|
|
|
package entitlements
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
|
|
"github.com/lib/pq"
|
|
)
|
|
|
|
const anyActiveEntitlementSet = `-- name: AnyActiveEntitlementSet :one
|
|
SELECT EXISTS(SELECT 1 FROM core.entitlement_sets WHERE is_active = TRUE)
|
|
`
|
|
|
|
// Setup-checklist existence probe: the whole-table answer, not a lookup.
|
|
func (q *Queries) AnyActiveEntitlementSet(ctx context.Context) (bool, error) {
|
|
row := q.db.QueryRowContext(ctx, anyActiveEntitlementSet)
|
|
var exists bool
|
|
err := row.Scan(&exists)
|
|
return exists, err
|
|
}
|
|
|
|
const createEntitlementSet = `-- name: CreateEntitlementSet :one
|
|
INSERT INTO core.entitlement_sets (name, description, is_active, key)
|
|
VALUES ($1, $2, $3, $4)
|
|
RETURNING set_id, name, description, is_active, created_at, updated_at, key
|
|
`
|
|
|
|
type CreateEntitlementSetParams struct {
|
|
Name string `json:"name"`
|
|
Description sql.NullString `json:"description"`
|
|
IsActive bool `json:"is_active"`
|
|
Key sql.NullString `json:"key"`
|
|
}
|
|
|
|
// `key` is the optional declarative address (entity-keys §3), root-scoped.
|
|
// The operator create form does not collect one, so a UI-created set leaves
|
|
// it NULL; a seed or a configuration loader supplies it.
|
|
func (q *Queries) CreateEntitlementSet(ctx context.Context, arg CreateEntitlementSetParams) (EntitlementSet, error) {
|
|
row := q.db.QueryRowContext(ctx, createEntitlementSet,
|
|
arg.Name,
|
|
arg.Description,
|
|
arg.IsActive,
|
|
arg.Key,
|
|
)
|
|
var i EntitlementSet
|
|
err := row.Scan(
|
|
&i.SetID,
|
|
&i.Name,
|
|
&i.Description,
|
|
&i.IsActive,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.Key,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const getEntitlementSetByID = `-- name: GetEntitlementSetByID :one
|
|
SELECT set_id, name, description, is_active, created_at, updated_at, key FROM core.entitlement_sets
|
|
WHERE set_id = $1
|
|
`
|
|
|
|
func (q *Queries) GetEntitlementSetByID(ctx context.Context, setID string) (EntitlementSet, error) {
|
|
row := q.db.QueryRowContext(ctx, getEntitlementSetByID, setID)
|
|
var i EntitlementSet
|
|
err := row.Scan(
|
|
&i.SetID,
|
|
&i.Name,
|
|
&i.Description,
|
|
&i.IsActive,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.Key,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const getEntitlementSetByKey = `-- name: GetEntitlementSetByKey :one
|
|
SELECT set_id, name, description, is_active, created_at, updated_at, key FROM core.entitlement_sets
|
|
WHERE key = $1
|
|
`
|
|
|
|
// Root key resolver (entity-keys §5). uq_entitlement_sets_key guarantees at
|
|
// most one row matches.
|
|
func (q *Queries) GetEntitlementSetByKey(ctx context.Context, key sql.NullString) (EntitlementSet, error) {
|
|
row := q.db.QueryRowContext(ctx, getEntitlementSetByKey, key)
|
|
var i EntitlementSet
|
|
err := row.Scan(
|
|
&i.SetID,
|
|
&i.Name,
|
|
&i.Description,
|
|
&i.IsActive,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.Key,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const listActiveEntitlementSets = `-- name: ListActiveEntitlementSets :many
|
|
SELECT set_id, name, description, is_active, created_at, updated_at, key FROM core.entitlement_sets
|
|
WHERE is_active = TRUE
|
|
ORDER BY name ASC
|
|
`
|
|
|
|
func (q *Queries) ListActiveEntitlementSets(ctx context.Context) ([]EntitlementSet, error) {
|
|
rows, err := q.db.QueryContext(ctx, listActiveEntitlementSets)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
items := []EntitlementSet{}
|
|
for rows.Next() {
|
|
var i EntitlementSet
|
|
if err := rows.Scan(
|
|
&i.SetID,
|
|
&i.Name,
|
|
&i.Description,
|
|
&i.IsActive,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.Key,
|
|
); 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 listEntitlementSets = `-- name: ListEntitlementSets :many
|
|
SELECT set_id, name, description, is_active, created_at, updated_at, key FROM core.entitlement_sets
|
|
ORDER BY name ASC
|
|
`
|
|
|
|
func (q *Queries) ListEntitlementSets(ctx context.Context) ([]EntitlementSet, error) {
|
|
rows, err := q.db.QueryContext(ctx, listEntitlementSets)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
items := []EntitlementSet{}
|
|
for rows.Next() {
|
|
var i EntitlementSet
|
|
if err := rows.Scan(
|
|
&i.SetID,
|
|
&i.Name,
|
|
&i.Description,
|
|
&i.IsActive,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.Key,
|
|
); 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 listEntitlementSetsByIDs = `-- name: ListEntitlementSetsByIDs :many
|
|
SELECT set_id, name, description, is_active, created_at, updated_at, key FROM core.entitlement_sets
|
|
WHERE set_id = ANY($1::uuid[])
|
|
ORDER BY name ASC
|
|
`
|
|
|
|
// The products list's set names for one page in one read (purchasability-
|
|
// status "The verdict per page, from batches, never cached", design D4,
|
|
// folded in on the maintainer's word 2026-09-06): the sets the page's
|
|
// products reference, instead of GetEntitlementSetByID once per row.
|
|
func (q *Queries) ListEntitlementSetsByIDs(ctx context.Context, setIds []string) ([]EntitlementSet, error) {
|
|
rows, err := q.db.QueryContext(ctx, listEntitlementSetsByIDs, pq.Array(setIds))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
items := []EntitlementSet{}
|
|
for rows.Next() {
|
|
var i EntitlementSet
|
|
if err := rows.Scan(
|
|
&i.SetID,
|
|
&i.Name,
|
|
&i.Description,
|
|
&i.IsActive,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.Key,
|
|
); 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 lockEntitlementSet = `-- name: LockEntitlementSet :one
|
|
SELECT set_id FROM core.entitlement_sets
|
|
WHERE set_id = $1
|
|
FOR UPDATE
|
|
`
|
|
|
|
// The set row taken FOR UPDATE: the guard a rule change holds beside the
|
|
// exclusive materialization rendezvous against a writer that changes the set
|
|
// row without that lock. A batch takes it once for every act it files
|
|
// (entitlement-set-management, "A rule change commit reaches every carrying
|
|
// pool").
|
|
func (q *Queries) LockEntitlementSet(ctx context.Context, setID string) (string, error) {
|
|
row := q.db.QueryRowContext(ctx, lockEntitlementSet, setID)
|
|
var set_id string
|
|
err := row.Scan(&set_id)
|
|
return set_id, err
|
|
}
|
|
|
|
const updateEntitlementSet = `-- name: UpdateEntitlementSet :one
|
|
UPDATE core.entitlement_sets
|
|
SET name = $2, description = $3, is_active = $4
|
|
WHERE set_id = $1
|
|
RETURNING set_id, name, description, is_active, created_at, updated_at, key
|
|
`
|
|
|
|
type UpdateEntitlementSetParams struct {
|
|
SetID string `json:"set_id"`
|
|
Name string `json:"name"`
|
|
Description sql.NullString `json:"description"`
|
|
IsActive bool `json:"is_active"`
|
|
}
|
|
|
|
func (q *Queries) UpdateEntitlementSet(ctx context.Context, arg UpdateEntitlementSetParams) (EntitlementSet, error) {
|
|
row := q.db.QueryRowContext(ctx, updateEntitlementSet,
|
|
arg.SetID,
|
|
arg.Name,
|
|
arg.Description,
|
|
arg.IsActive,
|
|
)
|
|
var i EntitlementSet
|
|
err := row.Scan(
|
|
&i.SetID,
|
|
&i.Name,
|
|
&i.Description,
|
|
&i.IsActive,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.Key,
|
|
)
|
|
return i, err
|
|
}
|