|
1 | | -from datetime import datetime, timedelta |
| 1 | +from datetime import datetime, timedelta, timezone |
2 | 2 | from typing import List |
3 | 3 | from fastapi import Request |
4 | 4 | from app.core.security import db |
@@ -65,17 +65,24 @@ async def refresh_user_credits(user_id: str, is_guest: bool, credits: dict) -> i |
65 | 65 | credits = db.table('credits').select('*').eq('user_id', user_id).maybe_single().execute() |
66 | 66 | if not credits.data: |
67 | 67 | return 0 |
| 68 | + |
| 69 | + daily_amount = settings.GUEST_DAILY_CREDITS if is_guest else settings.USER_DAILY_CREDITS |
| 70 | + max_credits = settings.GUEST_MAX_CREDITS if is_guest else settings.USER_MAX_CREDITS |
68 | 71 |
|
69 | | - last_update = datetime.fromisoformat(credits.data['last_free_credit_update']) |
70 | | - days_elapsed = (datetime.now() - last_update).days |
| 72 | + if not credits.data['last_free_credit_update']: |
| 73 | + # Update credits |
| 74 | + db.table('credits').update({ |
| 75 | + 'balance': max_credits, |
| 76 | + 'last_free_credit_update': datetime.now().isoformat() |
| 77 | + }).eq('user_id', user_id).execute() |
| 78 | + return max_credits |
71 | 79 |
|
| 80 | + last_update = datetime.fromisoformat(credits.data['last_free_credit_update']) |
| 81 | + days_elapsed = (datetime.now(timezone.utc) - last_update).days |
72 | 82 | if days_elapsed < 1: |
73 | 83 | return credits.data['balance'] |
74 | 84 |
|
75 | 85 | # Calculate credits to add for elapsed days |
76 | | - daily_amount = settings.GUEST_DAILY_CREDITS if is_guest else settings.USER_DAILY_CREDITS |
77 | | - max_credits = settings.GUEST_MAX_CREDITS if is_guest else settings.USER_MAX_CREDITS |
78 | | - |
79 | 86 | new_balance = min( |
80 | 87 | credits.data['balance'] + (daily_amount * days_elapsed), |
81 | 88 | max_credits |
|
0 commit comments