|
18 | 18 | InvalidForgeKeyException, |
19 | 19 | ) |
20 | 20 | from app.models.user import User |
| 21 | +from app.models.provider_key import ProviderKey |
21 | 22 | from app.core.database import get_db_session |
22 | 23 | from app.services.wallet_service import WalletService |
23 | 24 |
|
@@ -193,9 +194,6 @@ async def _load_provider_keys(self) -> dict[str, dict[str, Any]]: |
193 | 194 | f"Loading provider keys from database for user {self.user_id} (sync)" |
194 | 195 | ) |
195 | 196 |
|
196 | | - # Query ProviderKey directly by user_id |
197 | | - from app.models.provider_key import ProviderKey |
198 | | - |
199 | 197 | result = await self.db.execute( |
200 | 198 | select(ProviderKey).filter( |
201 | 199 | ProviderKey.user_id == self.user_id, ProviderKey.deleted_at == None |
@@ -253,9 +251,6 @@ async def _load_provider_keys_async(self) -> dict[str, dict[str, Any]]: |
253 | 251 | f"Loading provider keys from database for user {self.user_id} (async)" |
254 | 252 | ) |
255 | 253 |
|
256 | | - # Query ProviderKey directly by user_id |
257 | | - from app.models.provider_key import ProviderKey |
258 | | - |
259 | 254 | result = await self.db.execute( |
260 | 255 | select(ProviderKey).filter( |
261 | 256 | ProviderKey.user_id == self.user_id, ProviderKey.deleted_at == None |
@@ -597,14 +592,18 @@ async def process_request( |
597 | 592 | # Process the request through the adapter |
598 | 593 | usage_tracker_id = None |
599 | 594 | if self.api_key_id is not None and provider_key_id is not None: |
600 | | - await WalletService.wallet_precheck(self.user_id, self.db, provider_key_id) |
| 595 | + result = await self.db.execute(select(ProviderKey.billable).where(ProviderKey.id == provider_key_id)) |
| 596 | + billable = result.scalar_one_or_none() or False |
| 597 | + if billable: |
| 598 | + await WalletService.wallet_precheck(self.user_id, self.db) |
601 | 599 | usage_tracker_id = await UsageTrackerService.start_tracking_usage( |
602 | 600 | db=self.db, |
603 | 601 | user_id=self.user_id, |
604 | 602 | provider_key_id=provider_key_id, |
605 | 603 | forge_key_id=self.api_key_id, |
606 | 604 | model=actual_model, |
607 | 605 | endpoint=endpoint, |
| 606 | + billable=billable, |
608 | 607 | ) |
609 | 608 | else: |
610 | 609 | # For api like list models, we don't have usage tracking |
|
0 commit comments