app.repository.wallet_repository module

class app.repository.wallet_repository.WalletRepository(session_factory, model=<class 'app.model.wallet.Wallet'>)[source]

Bases: BaseRepository

Repository class for wallets.

Parameters:

session_factory (Callable[[...], AbstractAsyncContextManager[AsyncSession]])

async upsert_points_balance(user_id, points_delta, api_key=None, oauth_user_id=None, session=None, auto_commit=True)[source]

Atomically increments a user’s wallet points balance via INSERT ... ON CONFLICT DO UPDATE.

Parameters:
  • points_delta (int)

  • api_key (str | None)

  • oauth_user_id (str | None)

  • session (AsyncSession | None)

  • auto_commit (bool)

Return type:

Wallet