Common core library for all microservices
Project description
SAAS Core Library
Common core library for all microservices in the SAAS platform.
Features
- Database Management: SQLAlchemy 2.0+ async engine with connection pooling
- Redis Client: Async Redis client with state and cache databases
- Elasticsearch: Centralized Elasticsearch client management
- Security: JWT token management, password hashing, API key handling
- Logging: Structured logging with service-specific loggers
- Response Handling: Standardized API response formats
- Configuration: Environment-based configuration management
Installation
pip install saas-core-lib
Usage
Database
from saas_core_lib import get_db_session, create_tables
# Get database session
async with get_db_session() as session:
# Your database operations
pass
# Create all tables
await create_tables()
Redis
from saas_core_lib import get_redis_client
# Get Redis client
redis_client = await get_redis_client()
await redis_client.set("key", "value")
Security
from saas_core_lib import hash_password, verify_password, create_access_token
# Hash password
hashed = hash_password("my_password")
# Verify password
is_valid = verify_password("my_password", hashed)
# Create JWT token
token = create_access_token({"user_id": "123"})
Response Handling
from saas_core_lib import create_success_response, create_error_response, ErrorCode
# Success response
return create_success_response("User created successfully", {"user_id": "123"})
# Error response
return create_error_response("User not found", ErrorCode.NOT_FOUND, 404)
Logging
from saas_core_lib import get_logger, LogLevel, setup_logging
# Setup logging for service
setup_logging("my-service", LogLevel.INFO)
# Get logger
logger = get_logger("my-service")
logger.info("Application started")
Configuration
Set environment variables in .env file:
# Database
DATABASE_URL=postgresql+asyncpg://user:pass@localhost/dbname
# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=password
# Elasticsearch
ELASTICSEARCH_URL=https://localhost:9200
ELASTICSEARCH_USERNAME=user
ELASTICSEARCH_PASSWORD=pass
# JWT
JWT_SECRET=your-secret-key
JWT_ALGORITHM=HS256
JWT_EXPIRE_DAYS=7
Development
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Code formatting
black src/
isort src/
# Type checking
mypy src/
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
saas_core_lib-0.1.5.tar.gz
(25.1 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file saas_core_lib-0.1.5.tar.gz.
File metadata
- Download URL: saas_core_lib-0.1.5.tar.gz
- Upload date:
- Size: 25.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
783c8d32e22c91dc9890ca6e7f6085954bc919b8a2e4a41af4934c50568f64f2
|
|
| MD5 |
f2e6f8ee8bec3533554ff0a25e02718a
|
|
| BLAKE2b-256 |
768c0619b7bec01b5a09f044c74995f98c3e06aa78fc2a0ff41c0a34734ae820
|
File details
Details for the file saas_core_lib-0.1.5-py3-none-any.whl.
File metadata
- Download URL: saas_core_lib-0.1.5-py3-none-any.whl
- Upload date:
- Size: 28.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25dc867904238708a06587bb7343ca2265bde4e82660d6efc32ad56f1b0f4f9e
|
|
| MD5 |
2f9be120e0a878155fb8affd3058d60b
|
|
| BLAKE2b-256 |
5b36afe3b45f2afe0534c31f40a5c54732fb4fedd3388f5b33c7d9d2f928590c
|