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.8.tar.gz (14.6 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.8-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: earnbase_common-0.1.8.tar.gz
  • Upload date:
  • Size: 14.6 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.8.tar.gz
Algorithm Hash digest
SHA256 6c3be2aaea56ce6cf9d5998ede2d4aabe65f7a984db158dab254cc94f02bd116
MD5 5b3560c6767c00d4a0fa4575e34d8343
BLAKE2b-256 eef0bcb89a109eb1e1a40af59db39152590842dd93e8a7acbd24c4c4bde61879

See more details on using hashes here.

File details

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

File metadata

  • Download URL: earnbase_common-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 21.1 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.8-py3-none-any.whl
Algorithm Hash digest
SHA256 77ba9bbdfd473dc26b9936171574b1ab153f3f682e09c75dbf039c560ba7ed1c
MD5 ec656f00b9ddd84651762067ae57ae31
BLAKE2b-256 853305f833b1dca914fc89d96ab8283582833e89494a927d3034c077aed986f0

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