feat: implement broker credential repository with upsert and list operations
- Add BrokerCredential to domain models and repositories - Implement upsert_broker_credential() for credential storage and rotation - Implement list_broker_credentials() for credential retrieval - Implement delete_broker_credential() for credential removal - Add broker_credentials table schema with (user_id, broker) composite key - Implement credential version tracking and last_rotated_at timestamps - Add FakeRepo support for broker credential CRUD operations - Add comprehensive test coverage for broker credential lifecycle
This commit is contained in:
@@ -5,7 +5,7 @@ from __future__ import annotations
|
||||
from datetime import datetime
|
||||
from typing import Protocol
|
||||
|
||||
from app.domain.models import AuthToken, Daemon, LedgerEntry, Portfolio, PortfolioComment, PortfolioTag, StrategySet, TokenPrincipal, User
|
||||
from app.domain.models import AuthToken, BrokerCredential, Daemon, LedgerEntry, Portfolio, PortfolioComment, PortfolioTag, StrategySet, TokenPrincipal, User
|
||||
|
||||
|
||||
class PortfolioRepository(Protocol):
|
||||
@@ -42,6 +42,19 @@ class PortfolioRepository(Protocol):
|
||||
|
||||
def update_user_last_login(self, user_id: str) -> None: ...
|
||||
|
||||
def upsert_broker_credential(
|
||||
self,
|
||||
user_id: str,
|
||||
broker: str,
|
||||
*,
|
||||
account_ref: str,
|
||||
encrypted_payload: str,
|
||||
) -> BrokerCredential: ...
|
||||
|
||||
def list_broker_credentials(self, user_id: str) -> list[BrokerCredential]: ...
|
||||
|
||||
def delete_broker_credential(self, user_id: str, broker: str) -> bool: ...
|
||||
|
||||
def create_auth_token(
|
||||
self,
|
||||
user_id: str,
|
||||
|
||||
Reference in New Issue
Block a user