Shared base repository and service utilities for SQLAlchemy-backed FastAPI apps.
Project description
Repository Core
A powerful and flexible base repository and service utilities package for SQLAlchemy-backed FastAPI applications.
Overview
Repository Core provides a set of base classes and utilities to help you implement clean and maintainable repository and service patterns in your FastAPI applications. It's designed to work seamlessly with SQLAlchemy and follows best practices for database operations and business logic separation.
Features
- Base repository classes for common CRUD operations
- Service layer abstractions for business logic
- SQLAlchemy model utilities
- Exceptions
- Schema validation
- Utility functions for common operations
Installation
pip install repository-core
Requirements
- Python >= 3.13
- FastAPI >= 0.115.2
- SQLAlchemy >= 2.0.40
Usage Guide
1. Setting Up Base Models
from repository_core.models import BaseModel
class User(BaseModel):
__tablename__ = "users"
email = Column(String, unique=True, nullable=False)
name = Column(String)
2. Creating a Repository
from repository_core.repository import BaseRepository
from repository_core.models import BaseModel
class UserRepository(BaseRepository):
def __init__(self, session):
super().__init__(session, User) #Access all the methods of base-repository
# Add custom repository methods here
async def get_by_email(self, email: str) -> Optional[User]:
return await self.get_one(User.email == email)
3. Implementing a Service
from repository_core.services import BaseService
class UserService(BaseService):
def __init__(self, repository: UserRepository):
super().__init__(repository)
# Add custom service methods here
async def create_user(self, data: UserCreate) -> User:
return await self.create(data)
Project Structure
repository_core/
├── models/ # Base model classes
├── repository/ # Base repository implementations
├── services/ # Base service implementations
├── schemas/ # Pydantic schemas
├── exceptions/ # Custom exceptions
└── utils/ # Utility functions
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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 abs_repository_core-0.5.0.tar.gz.
File metadata
- Download URL: abs_repository_core-0.5.0.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.13.5 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
447d212f5a6d361bf97f3557e8b79109dc252188412f408b483052f5c629d2c7
|
|
| MD5 |
bd261d93d9cce52a369a89692cb957f4
|
|
| BLAKE2b-256 |
1d0fb18da783c1425011e45a5e2019b277ba2b411cdc7163ea36b872719e3e32
|
File details
Details for the file abs_repository_core-0.5.0-py3-none-any.whl.
File metadata
- Download URL: abs_repository_core-0.5.0-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.13.5 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbce8c28db6223bf9c006c2fdf096a0a19b76aaa4f604e53e5d2c47430682631
|
|
| MD5 |
a27625db93831a37359420e6e5acf727
|
|
| BLAKE2b-256 |
df16d496e4535084654afe251cdd5b408396e1f5e9031fe2ffbef8a1ee08c318
|