Skip to main content

NoSQL Integration Core

A comprehensive library for building OAuth-based integration services with NoSQL databases in FastAPI applications.

Overview

NoSQL Integration Core extends the base Integration Core library to provide specialized support for NoSQL databases like MongoDB. It simplifies the process of managing OAuth tokens, API credentials, and integration state while leveraging the flexibility and scalability of NoSQL databases.

Installation

# Using pip
pip install abs-nosql-integration-core

# Using Poetry
poetry add abs-nosql-integration-core

Features

  • Complete OAuth 2.0 flow management
  • Secure token storage with encryption
  • Automatic token refresh handling
  • NoSQL database integration with Beanie ODM
  • Asynchronous API with FastAPI compatibility
  • Built-in MongoDB integration

Architecture

The package follows a modular architecture:

  • Repository Layer: Handles persistence with NoSQL databases
  • Service Layer: Implements OAuth flows and business logic
  • Models: Defines document models for NoSQL storage
  • Schemas: Defines data models and validation

Usage

Basic Setup

from abs_nosql_integration_core.service import IntegrationBaseService
from abs_nosql_integration_core.repository import IntegrationRepository
from abs_integration_core.utils.encryption import Encryption

# Create an integration service
class MyIntegrationService(IntegrationBaseService):
    def __init__(
        self,
        provider_name: str,
        integration_repository: IntegrationRepository,
        encryption: Encryption
    ):
        super().__init__(provider_name, integration_repository, encryption)
        # Additional provider-specific configuration

Dependency Injection Setup

from dependency_injector import containers, providers
from abs_nosql_integration_core.repository import IntegrationRepository
from abs_integration_core.utils.encryption import Encryption

class Container(containers.DeclarativeContainer):
    # MongoDB initialization
    mongodb_client = providers.Singleton(
        MongoClient, 
        connection_string=settings.MONGODB_CONNECTION_STRING
    )
    
    # Encryption service
    encryption = providers.Singleton(
        Encryption,
        secret_key=settings.ENCRYPTION_KEY
    )
    
    # Repository layer
    integration_repository = providers.Singleton(IntegrationRepository)
    
    # Service layer
    my_integration_service = providers.Singleton(
        MyIntegrationService,
        provider_name="my_provider",
        integration_repository=integration_repository,
        encryption=encryption
    )

FastAPI Integration

from fastapi import Depends, FastAPI, APIRouter
from dependency_injector.wiring import inject, Provide

router = APIRouter()

@router.get("/connect")
async def connect(
    service: IntegrationBaseService = Depends(get_integration_service),
):
    auth_url = service.get_auth_url()
    return {"auth_url": auth_url}

@router.get("/callback")
async def callback(
    code: str,
    service: IntegrationBaseService = Depends(get_integration_service),
):
    token_data = await service.handle_oauth_callback(code)
    return {"status": "connected"}

Document Schema

The integration document model includes:

class IntegrationDocument(BaseDraftDocument):
    provider_name: str  # Name of the integration provider
    access_token: str   # OAuth access token (encrypted)
    refresh_token: str  # OAuth refresh token (encrypted)
    expires_at: datetime  # Token expiration date

Repository Methods

The IntegrationRepository class provides:

  • create_integration: Create a new integration record
  • refresh_token: Update access and refresh tokens
  • get_query_by_provider: Find an integration by provider name
  • get_integration: Get a single integration by provider
  • get_all_integrations: Get all integrations
  • delete_integration: Remove an integration

Service Methods

The IntegrationBaseService class provides:

  • get_auth_url: Generate OAuth authorization URL
  • handle_oauth_callback: Process OAuth callback and store tokens
  • refresh_token: Refresh expired access tokens
  • get_integration: Get current integration details
  • delete_integration: Remove integration and related tokens

Exception Handling

The library uses a standard exception hierarchy:

  • NotFoundError: Integration not found
  • BadRequestError: Invalid request parameters
  • DuplicatedError: Integration already exists
  • UnauthorizedError: Authentication issues

MongoDB Configuration

The package supports MongoDB through Beanie ODM:

from beanie import init_beanie
from motor.motor_asyncio import AsyncIOMotorClient
from abs_nosql_integration_core.model import IntegrationDocument

async def init_mongodb():
    # Create Motor client
    client = AsyncIOMotorClient(MONGODB_URL)
    
    # Initialize Beanie with document models
    await init_beanie(
        database=client.db_name,
        document_models=[IntegrationDocument]
    )

Best Practices

  • Always encrypt sensitive tokens using the provided encryption utilities
  • Use dependency injection for better testability
  • Implement proper error handling for OAuth edge cases
  • Consider rate limiting for API calls
  • Implement proper logging for debugging
  • Use async context managers for database operations

Contributing

Contributions are welcome! Please feel free to submit pull requests.

License

This project is licensed under the MIT License.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

abs_nosql_integration_core-0.5.1.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

abs_nosql_integration_core-0.5.1-py3-none-any.whl (17.3 kB view details)

Uploaded Python 3

File details

Details for the file abs_nosql_integration_core-0.5.1.tar.gz.

File metadata

  • Download URL: abs_nosql_integration_core-0.5.1.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.14.6 Darwin/25.5.0

File hashes

Hashes for abs_nosql_integration_core-0.5.1.tar.gz
Algorithm Hash digest
SHA256 e2fa9aa574877515c47d2e3771cfa81bfb3185517c4872a7dc2ed988de5e4dd0
MD5 b8f0547cbf5502bfcbd6f4ecb422012b
BLAKE2b-256 40d2e1de64def87ec7b9bb216a0022eeb2cf0f5df6986a666b53130c30c6e500

See more details on using hashes here.

File details

Details for the file abs_nosql_integration_core-0.5.1-py3-none-any.whl.

File metadata

File hashes

Hashes for abs_nosql_integration_core-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5e86c55153202305e1b3d25158e722744f030ce77a32c667c188a2de60a6b57f
MD5 e5840c4d3067323d9a95dd9f966f7710
BLAKE2b-256 9559827667cd17fb9a74fb9df3fa27045b492b6f192b4b76cd72e6bc3fd6a008

See more details on using hashes here.

Release history Release notifications | RSS feed

0.5.2

2 files

This release

0.5.1 This release

2 files

0.5.0

2 files

0.4.0

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.18

2 files

0.1.17

2 files

0.1.16

2 files

0.1.15

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page