# app/modules/billing/services/platform_pricing_service.py """ Platform pricing service. Handles database operations for subscription tiers and add-on products. """ from sqlalchemy.orm import Session from app.modules.billing.models import ( AddOnProduct, SubscriptionTier, ) class PlatformPricingService: """Service for handling pricing data operations.""" def get_public_tiers(self, db: Session) -> list[SubscriptionTier]: """Get all public subscription tiers from the database.""" return ( db.query(SubscriptionTier) .filter( SubscriptionTier.is_active == True, SubscriptionTier.is_public == True, ) .order_by(SubscriptionTier.display_order) .all() ) def get_tier_by_code(self, db: Session, tier_code: str) -> SubscriptionTier | None: """Get a specific tier by code from the database.""" return ( db.query(SubscriptionTier) .filter( SubscriptionTier.code == tier_code, SubscriptionTier.is_active == True, ) .first() ) def get_active_addons(self, db: Session) -> list[AddOnProduct]: """Get all active add-on products from the database.""" return ( db.query(AddOnProduct) .filter(AddOnProduct.is_active == True) .order_by(AddOnProduct.category, AddOnProduct.display_order) .all() ) # Singleton instance platform_pricing_service = PlatformPricingService()