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.0.tar.gz
(24.7 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.0.tar.gz.
File metadata
- Download URL: saas_core_lib-0.1.0.tar.gz
- Upload date:
- Size: 24.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
85e1002c1ced86995a178c224e2179492d1f52d9095e3f6c4e21214b05f57b69
|
|
| MD5 |
1dfe88cae9787408f561834994b7be13
|
|
| BLAKE2b-256 |
8076d1edca2c5b1f995ab05e470cb1b03b1caeba5105c20a56eaa198ba194a18
|
File details
Details for the file saas_core_lib-0.1.0-py3-none-any.whl.
File metadata
- Download URL: saas_core_lib-0.1.0-py3-none-any.whl
- Upload date:
- Size: 28.5 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 |
4444f1cd040c6abad1511da3758f51c1eea537ce7e36e18929d8e83f2cb38698
|
|
| MD5 |
b89d095d2efade6a12930592a9f76a8c
|
|
| BLAKE2b-256 |
c537641a20a9a014c00ff4459de5e66a3bde142695e061deae3a45742def19fc
|