""" Seed subscription plans into the database. Creates a default annual membership plan for testing. """ import os from database import SessionLocal from models import SubscriptionPlan from payment_service import create_stripe_price def seed_plans(): """Create default subscription plans""" db = SessionLocal() try: # Check if plans already exist existing_plans = db.query(SubscriptionPlan).count() if existing_plans > 0: print(f"⚠️ Found {existing_plans} existing plan(s). Skipping seed.") return print("Creating subscription plans...") # Option 1: Create plan WITHOUT Stripe Price ID (for testing without Stripe) # Uncomment this if you want to test UI without actual Stripe integration annual_plan = SubscriptionPlan( name="Annual Membership", description="Full access to all LOAF community benefits for one year", price_cents=10000, # $100.00 billing_cycle="yearly", stripe_price_id=None, # Set to None for local testing active=True ) # Option 2: Create plan WITH Stripe Price ID (requires valid Stripe API key) # Uncomment this block and comment out Option 1 if you have Stripe configured """ try: stripe_price_id = create_stripe_price( product_name="LOAF Annual Membership", price_cents=10000, # $100.00 billing_cycle="yearly" ) print(f"✅ Created Stripe Price: {stripe_price_id}") annual_plan = SubscriptionPlan( name="Annual Membership", description="Full access to all LOAF community benefits for one year", price_cents=10000, billing_cycle="yearly", stripe_price_id=stripe_price_id, active=True ) except Exception as e: print(f"❌ Failed to create Stripe Price: {e}") print("Creating plan without Stripe Price ID for local testing...") annual_plan = SubscriptionPlan( name="Annual Membership", description="Full access to all LOAF community benefits for one year", price_cents=10000, billing_cycle="yearly", stripe_price_id=None, active=True ) """ db.add(annual_plan) db.commit() db.refresh(annual_plan) print(f"✅ Created plan: {annual_plan.name} (${annual_plan.price_cents/100:.2f}/{annual_plan.billing_cycle})") print(f" Plan ID: {annual_plan.id}") except Exception as e: print(f"❌ Error seeding plans: {e}") db.rollback() finally: db.close() if __name__ == "__main__": seed_plans()