Coverage for polar/processor_transaction/service.py: 40%

16 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-12-05 17:15 +0000

1from polar.integrations.stripe.service import stripe as stripe_service 1a

2from polar.models import ProcessorTransaction 1a

3from polar.models.processor_transaction import Processor 1a

4from polar.postgres import AsyncSession 1a

5 

6from .repository import ProcessorTransactionRepository 1a

7 

8 

9class ProcessorTransactionService: 1a

10 async def sync_stripe(self, session: AsyncSession) -> None: 1a

11 repository = ProcessorTransactionRepository.from_session(session) 

12 latest_transactions = await repository.get_latest_by_processor(Processor.stripe) 

13 latest_processor_ids = {tx.processor_id for tx in latest_transactions} 

14 

15 balance_transactions = await stripe_service.list_balance_transactions() 

16 async for balance_transaction in balance_transactions: 

17 # We reached the point where we have already synced all the fees 

18 if balance_transaction.id in latest_processor_ids: 

19 break 

20 await repository.create( 

21 ProcessorTransaction.from_stripe(balance_transaction) 

22 ) 

23 

24 

25processor_transaction = ProcessorTransactionService() 1a