Skip to content

Adapter Examples

ArchiPy provides a variety of adapters to help interface with external systems, maintaining a clean separation between your business logic and external dependencies.

Available Adapters

Adapter Purpose Example API Reference
Email Email sending interface Connect to SMTP servers for sending emails API
Keycloak Authentication & authorization User management and access control with Keycloak API
ORM Database access SQLAlchemy integration for database operations API
Redis Key-value store Caching, pub/sub, and data storage with Redis API

Adapter Architecture

ArchiPy follows the ports and adapters pattern (hexagonal architecture):

┌────────────────────────────────────────┐
│             Domain Logic               │
└───────────────────┬────────────────────┘
                    │ uses
┌───────────────────▼────────────────────┐
│                 Ports                  │
│          (Abstract Interfaces)         │
└───────────────────┬────────────────────┘
                    │ implemented by
┌───────────────────▼────────────────────┐
│                Adapters                │
│         (Concrete Implementations)     │
└───────────────────┬────────────────────┘
                    │ connects to
┌───────────────────▼────────────────────┐
│            External Systems            │
│   (Databases, APIs, Message Queues)    │
└────────────────────────────────────────┘

Testing with Mock Adapters

Each adapter in ArchiPy comes with a corresponding mock implementation for testing:

# Production code
from archipy.adapters.redis import RedisAdapter

redis = RedisAdapter(host="redis.example.com", port=6379)
redis.set("key", "value")

# Test code
from archipy.adapters.redis import RedisMock

redis_mock = RedisMock()
redis_mock.set("key", "test_value")
assert redis_mock.get("key") == "test_value"

Creating Custom Adapters

Creating custom adapters is straightforward:

  1. Define a port (abstract interface)
  2. Implement the adapter class
  3. Optionally create a mock implementation

See the Architecture guide for more details on creating custom adapters.