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.1.tar.gz
(24.8 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.1.tar.gz.
File metadata
- Download URL: saas_core_lib-0.1.1.tar.gz
- Upload date:
- Size: 24.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2acb5ad1554412814075d5065d62c5b3f234fe004c058510aa092c82e188fdac
|
|
| MD5 |
ef37f0ec787b1d8ec7edcad9a72b1070
|
|
| BLAKE2b-256 |
037bb93b3b630aa7602e26f9b4ed7538c09eea14588138cb0854dde3b735d1fd
|
File details
Details for the file saas_core_lib-0.1.1-py3-none-any.whl.
File metadata
- Download URL: saas_core_lib-0.1.1-py3-none-any.whl
- Upload date:
- Size: 28.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97980ebf14da1bac6742143552096d036cea35f639c5a5e10f6ce16dc7c93e81
|
|
| MD5 |
77113ba6ac90cef100b4ea889aa0e5c1
|
|
| BLAKE2b-256 |
d72338583a9b8844c091aad1632da8e59927feb92bffc68d465d2b5e9ca89ac9
|