Files
member-console/internal/entitlements/queries/pool_provision_ladders.sql
T
cgalo5758 71818de0bd Add setup checklist and empty-state guidance
Implement the ux-first-run change: a state-derived setup checklist on
/operator/setup with a landing region that recedes once required steps
are done, and empty states that distinguish blocked from empty across
operator and member surfaces. Also add production deployment and
environment reference docs, plus a config-key completeness test.
2026-08-23 03:06:11 -05:00

94 lines
4.2 KiB
SQL

-- Writes to core.pool_provision_ladders go through the conferral functions
-- (queries/conferral.sql) alone; core_writer holds no direct DML on this
-- table (migration 00005 enclosure). Only read paths live here.
-- name: GetActiveLadderAttachmentByPoolLadder :one
SELECT * FROM core.pool_provision_ladders
WHERE pool_id = $1 AND plan_ladder_id = $2 AND status = 'active'
LIMIT 1;
-- name: GetLadderAttachmentsByProvision :many
SELECT * FROM core.pool_provision_ladders
WHERE provision_id = $1
ORDER BY activated_at ASC;
-- name: GetLadderAttachmentsByPool :many
SELECT * FROM core.pool_provision_ladders
WHERE pool_id = $1
ORDER BY activated_at DESC;
-- name: GetActiveAttachmentsByPool :many
SELECT * FROM core.pool_provision_ladders
WHERE pool_id = $1 AND status = 'active'
ORDER BY activated_at DESC;
-- name: CountActiveAttachmentsByLadder :one
SELECT COUNT(*) FROM core.pool_provision_ladders
WHERE plan_ladder_id = $1 AND status = 'active';
-- name: ListLivePlanPositionsByOrgType :many
-- The whole population for the org-type default-change classification in one
-- round trip: one row per (org, live plan attachment), plus a row with NULL
-- pool for orgs lacking a default pool and a row with NULL attachment for
-- plan-less pools (LEFT JOINs). Replaces a per-org query pair, which does not
-- scale past a few hundred organizations of one type.
SELECT o.org_id, o.name, o.slug,
rp.pool_id,
l.provision_ladder_id, l.plan_ladder_id, l.provision_id,
l.status AS attachment_status,
p.product_id, p.grant_id, p.subscription_id, p.purchase_id,
g.grant_reason
FROM core.organizations o
LEFT JOIN core.resource_pools rp
ON rp.org_id = o.org_id AND rp.pool_type = 'default' AND rp.status = 'active'
LEFT JOIN core.pool_provision_ladders l
ON l.pool_id = rp.pool_id AND l.status IN ('active', 'suspended')
LEFT JOIN core.pool_provisions p ON p.provision_id = l.provision_id
LEFT JOIN core.grants g ON g.grant_id = p.grant_id
WHERE o.org_type = $1
ORDER BY o.name, o.org_id;
-- name: ListLiveTierHoldersByLadderProduct :many
-- The tier-removal preview/commit population in one round trip: every live
-- (active|suspended) junction on this ladder whose provision delivers this
-- product, with the org (name/slug) and grant provenance so holders classify
-- per position source (default-sourced needs a disposition; any other source
-- is align-shrunk and never force-ended).
SELECT l.provision_ladder_id, l.provision_id, l.status AS attachment_status,
p.product_id, p.grant_id, p.subscription_id, p.purchase_id,
g.grant_reason,
rp.pool_id, o.org_id, o.name, o.slug
FROM core.pool_provision_ladders l
JOIN core.pool_provisions p ON p.provision_id = l.provision_id
JOIN core.resource_pools rp ON rp.pool_id = l.pool_id
JOIN core.organizations o ON o.org_id = rp.org_id
LEFT JOIN core.grants g ON g.grant_id = p.grant_id
WHERE l.plan_ladder_id = $1 AND p.product_id = $2
AND l.status IN ('active', 'suspended')
ORDER BY o.name, o.org_id;
-- name: GetLivePlanAttachmentsWithSourceByPool :many
-- Live (active|suspended) plan-ladder attachments for a pool together with
-- their source provenance, for the org-type default-change classification:
-- a grant-sourced row with grant_reason = 'default' marks the pool as holding
-- the outgoing default (bucket 2); any other live row is another source's
-- plan (bucket 3); no rows at all is a plan-less pool (bucket 1).
SELECT l.provision_ladder_id, l.plan_ladder_id, l.provision_id,
l.status AS attachment_status,
p.product_id, p.grant_id, p.subscription_id, p.purchase_id,
g.grant_reason
FROM core.pool_provision_ladders l
JOIN core.pool_provisions p ON p.provision_id = l.provision_id
LEFT JOIN core.grants g ON g.grant_id = p.grant_id
WHERE l.pool_id = $1 AND l.status IN ('active', 'suspended')
ORDER BY l.activated_at DESC;
-- name: CountActiveAttachmentsByTier :one
SELECT COUNT(*) FROM core.pool_provision_ladders
WHERE plan_ladder_id = $1 AND product_id = $2 AND status = 'active';
-- name: AnyActiveLadderAttachment :one
-- Empty-validation-domain probe: the topology health strip claims health
-- only when at least one active attachment existed for the checks to cover.
SELECT EXISTS(SELECT 1 FROM core.pool_provision_ladders WHERE status = 'active');