sharktide commited on
Commit
6b3ee8d
·
verified ·
1 Parent(s): c536079

Create subscriptions.py

Browse files
Files changed (1) hide show
  1. subscriptions.py +61 -0
subscriptions.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from supabase import create_client, Client
2
+
3
+ SUPABASE_URL = os.getenv("SUPABASE_URL")
4
+ SUPABASE_KEY = os.getenv("SUPABASE_SERVICE_ROLE_KEY")
5
+ supabase: Client = create_client(SUPABASE_URL, SUPABASE_KEY)
6
+
7
+ async def fetch_subscription(email: str):
8
+ # Fetch user
9
+ user_res = supabase.table("auth.users").select("*").eq("email", email).execute()
10
+ if not user_res.data:
11
+ return None
12
+
13
+ user = user_res.data[0]
14
+
15
+ # Fetch Stripe customer
16
+ cust_res = supabase.table("stripe.customers").select("*").eq("email", email).execute()
17
+ if not cust_res.data:
18
+ return {
19
+ "email": email,
20
+ "signed_up": user["created_at"],
21
+ "subscription": None
22
+ }
23
+
24
+ customer = cust_res.data[0]
25
+
26
+ # Fetch subscriptions
27
+ sub_res = (
28
+ supabase.table("stripe.subscriptions")
29
+ .select("*")
30
+ .eq("customer", customer["id"])
31
+ .in_("status", ["active", "trialing", "past_due"])
32
+ .execute()
33
+ )
34
+
35
+ if not sub_res.data:
36
+ return {
37
+ "email": email,
38
+ "signed_up": user["created_at"],
39
+ "subscription": None
40
+ }
41
+
42
+ subs = []
43
+ for s in sub_res.data:
44
+ price_id = (
45
+ s["items"]["data"][0]["price"]["id"]
46
+ if s.get("items") and s["items"].get("data")
47
+ else None
48
+ )
49
+
50
+ subs.append({
51
+ "status": s["status"],
52
+ "subscription_id": s["id"],
53
+ "current_period_end": s["current_period_end"],
54
+ "price_id": price_id
55
+ })
56
+
57
+ return {
58
+ "email": email,
59
+ "signed_up": user["created_at"],
60
+ "subscription": subs
61
+ }