AlyanAkram commited on
Commit
e592664
·
verified ·
1 Parent(s): 299f191

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +31 -18
main.py CHANGED
@@ -9,42 +9,55 @@ app = FastAPI()
9
  SUPABASE_URL = os.getenv("SUPABASE_URL")
10
  SUPABASE_API_KEY = os.getenv("SUPABASE_API_KEY")
11
 
 
 
 
 
12
  @app.get("/reset-plans")
13
  def reset_expired_plans():
 
 
 
14
  headers = {
15
  "apikey": SUPABASE_API_KEY,
16
  "Authorization": f"Bearer {SUPABASE_API_KEY}",
17
  "Content-Type": "application/json"
18
  }
19
 
20
- # Step 1: Get users with non-free plans
21
- r = requests.get(
22
  f"{SUPABASE_URL}/rest/v1/users?plan=in.(basic,premium)&select=id,plan_set_at",
23
  headers=headers
24
  )
25
 
26
- if r.status_code != 200:
27
- return {"status": "error", "detail": r.text}
28
-
29
- users = r.json()
30
 
 
31
  now = datetime.now(timezone.utc)
32
- expired_ids = [
33
- user["id"]
34
- for user in users
35
- if user.get("plan_set_at") and (now - parser.parse(user["plan_set_at"])).days >= 30
36
- ]
37
-
38
- # Step 2: Reset plans
39
- for uid in expired_ids:
40
- requests.patch(
41
- f"{SUPABASE_URL}/rest/v1/users?id=eq.{uid}",
 
 
 
 
 
42
  headers=headers,
43
  json={"plan": "free", "plan_set_at": None}
44
  )
 
 
45
 
46
  return {
47
  "status": "success",
48
- "reset_count": len(expired_ids),
49
- "reset_users": expired_ids
50
  }
 
9
  SUPABASE_URL = os.getenv("SUPABASE_URL")
10
  SUPABASE_API_KEY = os.getenv("SUPABASE_API_KEY")
11
 
12
+ @app.get("/")
13
+ def root():
14
+ return {"message": "Plan reset API is running."}
15
+
16
  @app.get("/reset-plans")
17
  def reset_expired_plans():
18
+ if not SUPABASE_URL or not SUPABASE_API_KEY:
19
+ return {"status": "error", "detail": "Missing Supabase config."}
20
+
21
  headers = {
22
  "apikey": SUPABASE_API_KEY,
23
  "Authorization": f"Bearer {SUPABASE_API_KEY}",
24
  "Content-Type": "application/json"
25
  }
26
 
27
+ # Fetch users whose plans are 'basic' or 'premium'
28
+ response = requests.get(
29
  f"{SUPABASE_URL}/rest/v1/users?plan=in.(basic,premium)&select=id,plan_set_at",
30
  headers=headers
31
  )
32
 
33
+ if response.status_code != 200:
34
+ return {"status": "error", "detail": response.text}
 
 
35
 
36
+ users = response.json()
37
  now = datetime.now(timezone.utc)
38
+
39
+ expired_user_ids = []
40
+ for user in users:
41
+ plan_set_at = user.get("plan_set_at")
42
+ if plan_set_at:
43
+ plan_date = parser.parse(plan_set_at)
44
+ days_passed = (now - plan_date).days
45
+ if days_passed >= 30:
46
+ expired_user_ids.append(user["id"])
47
+
48
+ # Reset plans
49
+ reset_count = 0
50
+ for user_id in expired_user_ids:
51
+ update = requests.patch(
52
+ f"{SUPABASE_URL}/rest/v1/users?id=eq.{user_id}",
53
  headers=headers,
54
  json={"plan": "free", "plan_set_at": None}
55
  )
56
+ if update.status_code == 204:
57
+ reset_count += 1
58
 
59
  return {
60
  "status": "success",
61
+ "total_checked": len(users),
62
+ "expired_reset": reset_count
63
  }