fix(billing): use tier_id instead of tier_code for feature limit endpoints
Some checks failed
Some checks failed
Tier codes are not unique across platforms (e.g., "essential" exists for OMS, marketplace, and loyalty). Using tier_code caused feature limits to be saved to the wrong tier. Switched to tier_id (unique PK) in routes, service, and frontend JS. Added comprehensive unit and integration tests including cross-platform isolation regression tests. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -450,30 +450,24 @@ class FeatureService:
|
||||
# Tier Feature Limit Management
|
||||
# =========================================================================
|
||||
|
||||
def get_tier_feature_limits(self, db: Session, tier_code: str) -> list:
|
||||
def get_tier_feature_limits(self, db: Session, tier_id: int) -> list:
|
||||
"""Get feature limits for a tier."""
|
||||
from app.modules.billing.services import admin_subscription_service
|
||||
|
||||
tier = admin_subscription_service.get_tier_by_code(db, tier_code)
|
||||
return (
|
||||
db.query(TierFeatureLimit)
|
||||
.filter(TierFeatureLimit.tier_id == tier.id)
|
||||
.filter(TierFeatureLimit.tier_id == tier_id)
|
||||
.order_by(TierFeatureLimit.feature_code)
|
||||
.all()
|
||||
)
|
||||
|
||||
def upsert_tier_feature_limits(self, db: Session, tier_code: str, entries: list[dict]) -> list:
|
||||
def upsert_tier_feature_limits(self, db: Session, tier_id: int, entries: list[dict]) -> list:
|
||||
"""Replace feature limits for a tier. Returns list of new TierFeatureLimit objects."""
|
||||
from app.modules.billing.services import admin_subscription_service
|
||||
|
||||
tier = admin_subscription_service.get_tier_by_code(db, tier_code)
|
||||
db.query(TierFeatureLimit).filter(TierFeatureLimit.tier_id == tier.id).delete()
|
||||
db.query(TierFeatureLimit).filter(TierFeatureLimit.tier_id == tier_id).delete()
|
||||
new_rows = []
|
||||
for entry in entries:
|
||||
if not entry.get("enabled", True):
|
||||
continue
|
||||
row = TierFeatureLimit(
|
||||
tier_id=tier.id,
|
||||
tier_id=tier_id,
|
||||
feature_code=entry["feature_code"],
|
||||
limit_value=entry.get("limit_value"),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user