Framework based on FastAPI.
Project description
from typing import Self
UltraFramework
Description
Framework for FastAPI inspired by Java Spring.
- It exposes a base entity class SQLEntity that can be derived in order to define custom entities.
- It exposes a base repository class CRUDRepository[M] that can be derived in order to define custom repositories. The following public methods are available:
- save(entity: M): M
- find_all(limit: int | None, offset: int | None): Iterable[M]
- delete(entity: M): None
Example:
from typing import Self, Annotated
from sqlalchemy import create_engine, DDL
from sqlalchemy.orm import mapped_column, Mapped, Session
from sqlalchemy.sql.elements import ColumnElement
from ultra_framework.entities.sql_entity import SQLEntity
from ultra_framework.repositories.crud_repository import CRUDRepository
from ultra_framework.repositories.base_repository_factory import BaseRepositoryFactory
from ultra_framework.utils.dependencies import session_dependency
from ultra_framework.database.session_factory import SessionFactory
engine = create_engine("sqlite:///", connect_args={"check_same_thread": False})
conn = engine.connect()
conn.execute(DDL("""create table users (
id integer primary key,
name text
)"""))
conn.commit()
session_factory = SessionFactory(engine)
class UserEntity(SQLEntity):
__tablename__ = "users"
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str]
@classmethod
def by_id(cls, idx: int) -> ColumnElement[bool]:
return cls.id == idx
class UserRepository(CRUDRepository[UserEntity]):
entity_class = UserEntity
@CRUDRepository.auto_implement_one([UserEntity.by_id])
def find_by_id(self, idx: int) -> UserEntity: ...
class RepositoryFactory(BaseRepositoryFactory):
repository_map = {
"users": UserRepository,
}
@property
def user_repository(self) -> UserRepository:
return self.get_repository("users")
@classmethod
def create_factory(cls, session: Annotated[Session, session_dependency(session_factory)]) -> Self:
return cls(session)
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 ultra_framework-0.0.13.tar.gz.
File metadata
- Download URL: ultra_framework-0.0.13.tar.gz
- Upload date:
- Size: 6.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a31daac5969d565cb55d322dd9025d253e39dfa2ed69c32b028b730695f376e
|
|
| MD5 |
82c92f10c2546ccad072e18c48149bbc
|
|
| BLAKE2b-256 |
0301b191b21d16da195bdc1791fb99802a38708e26872d249260f5650a2ecf11
|
File details
Details for the file ultra_framework-0.0.13-py3-none-any.whl.
File metadata
- Download URL: ultra_framework-0.0.13-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a8235c11ad0752028c2e51f6f6c380cc6f5c90c27b194cf72b79dcfc1efdf92
|
|
| MD5 |
e68af39b402ba12fa4176cea415e5097
|
|
| BLAKE2b-256 |
4414315fcf07d2439fb4a0138e66632cb5d2c379e41154000999b06438ac1738
|