Skip to main content

Common utilities for Earnbase services

Project description

Earnbase Common Module

Common utilities and shared functionality for Earnbase Platform services.

Installation

Development Environment

# Install from local source
cd earnbase-common
pdm install -e .

Production Environment

# Install from private registry
pdm add earnbase-common

Service Configuration

Add dependency to pyproject.toml:

[project]
dependencies = [
    "earnbase-common @ {root:uri}/earnbase-common",  # For development
    # or
    "earnbase-common>=0.1.0",  # For production
]

Using MongoDB Client

Initialize Connection

from earnbase_common.database import mongodb
from earnbase_common.logging import get_logger

logger = get_logger(__name__)

async def startup():
    """Initialize MongoDB connection when service starts."""
    await mongodb.connect(
        url="mongodb://localhost:27017",
        db_name="earnbase",
        min_pool_size=10,
        max_pool_size=100
    )

async def shutdown():
    """Close MongoDB connection when service shuts down."""
    await mongodb.close()

Collection Operations

# Find one document
user = await mongodb.find_one(
    collection="users",
    query={"email": "user@example.com"}
)

# Find multiple documents
users = await mongodb.find_many(
    collection="users",
    query={"is_active": True},
    sort=[("created_at", -1)],
    skip=0,
    limit=10
)

# Insert document
user_id = await mongodb.insert_one(
    collection="users",
    document={
        "email": "new@example.com",
        "name": "New User"
    }
)

# Update document
modified_count = await mongodb.update_one(
    collection="users",
    query={"_id": user_id},
    update={
        "$set": {"is_active": False}
    }
)

# Delete document
deleted_count = await mongodb.delete_one(
    collection="users",
    query={"_id": user_id}
)

# Count documents
total = await mongodb.count_documents(
    collection="users",
    query={"is_active": True}
)

Index Management

# Create index
await mongodb.create_index(
    collection="users",
    keys=[("email", 1)],
    unique=True
)

# Drop index
await mongodb.drop_index(
    collection="users",
    index_name="email_1"
)

# List indexes
indexes = await mongodb.list_indexes(collection="users")

Error Handling

from pymongo.errors import PyMongoError

try:
    await mongodb.insert_one(collection="users", document=user_data)
except PyMongoError as e:
    logger.error(
        "mongodb_error",
        operation="insert_user",
        error=str(e),
        error_type=type(e).__name__
    )
    raise

Logging

Logging Configuration

from earnbase_common.logging import configure_logging, get_logger

# Configure logging when service starts
configure_logging()

# Use logger
logger = get_logger(__name__)

logger.info("user_created", user_id=user_id, email=email)
logger.error("operation_failed", error=str(error))

Error Handling

Using Exception Handlers

from earnbase_common.errors import (
    APIError,
    ValidationError,
    NotFoundError,
    register_error_handlers
)
from fastapi import FastAPI

app = FastAPI()

# Register error handlers
register_error_handlers(app)

# Use exceptions
async def get_user(user_id: str):
    user = await mongodb.find_one("users", {"_id": user_id})
    if not user:
        raise NotFoundError(
            message="User not found",
            details={"user_id": user_id}
        )
    return user

Contributing

  1. Fork repository
  2. Create feature branch
  3. Commit changes
  4. Push to branch
  5. Create Pull Request

License

MIT License

Project details


Download files

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

Source Distribution

earnbase_common-0.1.10.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

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

earnbase_common-0.1.10-py3-none-any.whl (20.9 kB view details)

Uploaded Python 3

File details

Details for the file earnbase_common-0.1.10.tar.gz.

File metadata

  • Download URL: earnbase_common-0.1.10.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.22.1 CPython/3.10.16 Linux/6.8.0-49-generic

File hashes

Hashes for earnbase_common-0.1.10.tar.gz
Algorithm Hash digest
SHA256 a006342a5746991025b7c2661c91e5a0f2bed02c9ff3fbafa5cb91d46a2a54a9
MD5 ef07af445801b49a80a7d8671be48300
BLAKE2b-256 b7306cd3d4f44a121ec8df6d766489011a130fbc8bb43b2e44da77e4dd676d56

See more details on using hashes here.

File details

Details for the file earnbase_common-0.1.10-py3-none-any.whl.

File metadata

  • Download URL: earnbase_common-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 20.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.22.1 CPython/3.10.16 Linux/6.8.0-49-generic

File hashes

Hashes for earnbase_common-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 472879e9cb614363e351c7ad24b9e1a2acdde27b5f33694c3725ec19ce10b03d
MD5 18ac17e4174c20a961513bad573da78f
BLAKE2b-256 9b98d72fb1db715231bf8048cdc61d56fde4d19d37666598a485f6aed7f49244

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page