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.4.tar.gz
(25.0 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.4.tar.gz.
File metadata
- Download URL: saas_core_lib-0.1.4.tar.gz
- Upload date:
- Size: 25.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99cbd752e534c5488404fc89295a4765aab4f083ec2b5e0137054814c477153f
|
|
| MD5 |
9250146fb864a5337f36aa30f3775f7a
|
|
| BLAKE2b-256 |
3f7641545149ea43e5620844512eb81c46bec8674ff96db6a69b9239db035c07
|
File details
Details for the file saas_core_lib-0.1.4-py3-none-any.whl.
File metadata
- Download URL: saas_core_lib-0.1.4-py3-none-any.whl
- Upload date:
- Size: 28.8 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 |
2d7397a2aa2b29f7729593389f34514709e3147ae8492bdaddfe9bb0c093c851
|
|
| MD5 |
2d6095437658393df0fa1b9d6d4e3e49
|
|
| BLAKE2b-256 |
cfd4db0404bf5891b73ea89bf7e2816aa3b6a04f198793e3780190f426668342
|