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.2.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.2.tar.gz.
File metadata
- Download URL: saas_core_lib-0.1.2.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 |
8fce4db356ad391b6591f79a0764cd59c4309eb585a1b724ecd6a56b1d12430a
|
|
| MD5 |
3b0d52b377da6ec6046eb3d37b1ecefc
|
|
| BLAKE2b-256 |
4b081fdd5a5586c80256892ac46c06e345d8a591b375cdbcd3e467e6907056e0
|
File details
Details for the file saas_core_lib-0.1.2-py3-none-any.whl.
File metadata
- Download URL: saas_core_lib-0.1.2-py3-none-any.whl
- Upload date:
- Size: 28.7 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 |
4921d873eb5f8224e44b370adfb65318f1370cfb090bade7525d97b0319d6ae2
|
|
| MD5 |
1dc621c9dba4d01be1b9d4669431a0cb
|
|
| BLAKE2b-256 |
e1e093a6e6158f3082c322c7418deab95374f6f71aa6697d1d7af2a97ff3c774
|