forked from andika/membership-be
66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
"""
|
|
Test script to diagnose the subscription plans endpoint issue.
|
|
"""
|
|
|
|
from database import SessionLocal
|
|
from models import SubscriptionPlan, Subscription, SubscriptionStatus
|
|
|
|
def test_plans_query():
|
|
"""Test the same query that the endpoint uses"""
|
|
db = SessionLocal()
|
|
|
|
try:
|
|
print("Testing subscription plans query...\n")
|
|
|
|
# Step 1: Get all plans
|
|
plans = db.query(SubscriptionPlan).order_by(SubscriptionPlan.created_at.desc()).all()
|
|
print(f"✅ Found {len(plans)} plan(s)")
|
|
|
|
# Step 2: For each plan, get subscriber count (same as endpoint)
|
|
result = []
|
|
for plan in plans:
|
|
print(f"\nProcessing plan: {plan.name}")
|
|
|
|
try:
|
|
subscriber_count = db.query(Subscription).filter(
|
|
Subscription.plan_id == plan.id,
|
|
Subscription.status == SubscriptionStatus.active
|
|
).count()
|
|
print(f" ✓ Subscriber count: {subscriber_count}")
|
|
except Exception as e:
|
|
print(f" ❌ Error counting subscribers: {e}")
|
|
raise
|
|
|
|
result.append({
|
|
"id": str(plan.id),
|
|
"name": plan.name,
|
|
"description": plan.description,
|
|
"price_cents": plan.price_cents,
|
|
"billing_cycle": plan.billing_cycle,
|
|
"stripe_price_id": plan.stripe_price_id,
|
|
"active": plan.active,
|
|
"subscriber_count": subscriber_count,
|
|
"created_at": plan.created_at,
|
|
"updated_at": plan.updated_at
|
|
})
|
|
|
|
print("\n" + "="*50)
|
|
print("✅ Query completed successfully!")
|
|
print("="*50)
|
|
for plan in result:
|
|
print(f"\n{plan['name']}")
|
|
print(f" Price: ${plan['price_cents']/100:.2f}")
|
|
print(f" Cycle: {plan['billing_cycle']}")
|
|
print(f" Active: {plan['active']}")
|
|
print(f" Subscribers: {plan['subscriber_count']}")
|
|
|
|
except Exception as e:
|
|
print(f"\n❌ ERROR: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
finally:
|
|
db.close()
|
|
|
|
if __name__ == "__main__":
|
|
test_plans_query()
|