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

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +50 -46
main.py CHANGED
@@ -1,46 +1,50 @@
1
- from fastapi import FastAPI, Request
2
- import requests
3
- from datetime import datetime, timezone
4
- from dateutil import parser
5
- import os
6
-
7
- app = FastAPI()
8
-
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: Fetch users with basic or premium
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 their plan to free
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 {"status": "success", "reset_count": len(expired_ids)}
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ import requests
3
+ from datetime import datetime, timezone
4
+ from dateutil import parser
5
+ import os
6
+
7
+ app = FastAPI()
8
+
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
+ }