Skip to content

feat: Add pluggable bank sync connector architecture#655

Open
flaggdavid-source wants to merge 1 commit intorohitdash08:mainfrom
flaggdavid-source:feat/bank-sync-connector-architecture
Open

feat: Add pluggable bank sync connector architecture#655
flaggdavid-source wants to merge 1 commit intorohitdash08:mainfrom
flaggdavid-source:feat/bank-sync-connector-architecture

Conversation

@flaggdavid-source
Copy link
Copy Markdown

Summary

Implements a pluggable architecture for bank integrations as requested in issue #75.

Changes Made

1. Base Connector Interface (app/services/connectors/base.py)

  • BaseConnector abstract class with authenticate(), import_transactions(), refresh_accounts() methods
  • Transaction and Account dataclasses for data representation
  • ConnectorConfig for configuration management
  • Exception classes: ConnectorError, AuthenticationError, ImportError, RefreshError

2. Mock Connector (app/services/connectors/mock.py)

  • MockConnector implementation for testing and development
  • Generates realistic sample transactions
  • Configurable via settings (fail_auth, fail_import, simulate_delay, etc.)

3. Connector Registry (app/services/connectors/registry.py)

  • ConnectorRegistry factory pattern for dynamic loading
  • Pre-registers mock connector
  • Convenience functions: get_connector(), list_connectors(), create_connector()

4. Unit Tests (tests/test_connectors.py)

  • 29 comprehensive tests covering:
    • Transaction and Account data classes
    • MockConnector authentication and import
    • ConnectorRegistry factory methods
    • Exception handling

Usage Example

from app.services.connectors import create_connector, ConnectorConfig

config = ConnectorConfig(
    connector_id="my-connector",
    connector_type="mock",
    credentials={"api_key": "test-key"}
)
connector = create_connector(config)
connector.authenticate({"api_key": "test-key"})
accounts = connector.refresh_accounts()
transactions = connector.import_transactions(accounts[0].account_id)

All 29 tests pass.

- Add BaseConnector abstract class with import/refresh methods
- Add Transaction and Account data classes
- Add MockConnector implementation for testing
- Add ConnectorRegistry factory pattern for dynamic loading
- Add comprehensive unit tests (29 tests)

Implements:
- Connector interface with import/refresh support
- Mock connector included for testing
- Registry pattern for dynamic connector loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant