from sqlmodel import Session, select from uuid import UUID import uuid from datetime import timedelta import models def generate_referral_link(user_id: UUID) -> str: """Generates a unique shortcode for the user to share.""" # Using a simple deterministic slice for the local sandbox shortcode = str(user_id).split("-")[0] return f"https://pragativeer.com/join/{shortcode}" def process_referral_reward(referrer_id: UUID, new_user_id: UUID, session: Session): """ Grants both users 7 days of AI Coach access for free as per PRD Section 3.2. """ referrer = session.get(models.User, referrer_id) new_user = session.get(models.User, new_user_id) if referrer and new_user: # Upgrade both to AI Coach referrer.tier = models.TierEnum.AI_COACH new_user.tier = models.TierEnum.AI_COACH # Add 7 days to their trial/subscription end dates from datetime import datetime now = datetime.utcnow() referrer.subscription_end = (referrer.subscription_end or now) + timedelta(days=7) new_user.trial_end = now + timedelta(days=7) session.add(referrer) session.add(new_user) session.commit() return True return False