Per-route limit rules — identity row. Tier shape mirrors
product_activation_rule (see that file for the (type, customer_id) tier
table).
Mutable on currentVersionId, matcherHash, and deletedAt only.
Every change to the matcher, status, priority, any limit column, or
label/description inserts a new product_limit_rule_version row and
re-points currentVersionId (and re-stamps matcherHash) in the same
transaction.
Duplicate-matcher detection is enforced by
product_limit_rule_unique_tuple — see productActivationRuleTable
for the rationale; the same denormalization pattern applies here.
Per-route limit rules — identity row. Tier shape mirrors product_activation_rule (see that file for the (type, customer_id) tier table).
Mutable on
currentVersionId,matcherHash, anddeletedAtonly. Every change to the matcher, status, priority, any limit column, or label/description inserts a newproduct_limit_rule_versionrow and re-pointscurrentVersionId(and re-stampsmatcherHash) in the same transaction.Duplicate-matcher detection is enforced by
product_limit_rule_unique_tuple— seeproductActivationRuleTablefor the rationale; the same denormalization pattern applies here.