Initial release: async repository layer over SQLModel

This commit is contained in:
2026-08-13 22:25:59 +03:00
commit 3d85c2b5dd
26 changed files with 2252 additions and 0 deletions

68
tests/conftest.py Normal file
View File

@@ -0,0 +1,68 @@
from collections.abc import AsyncGenerator
import pytest
import pytest_asyncio
from metaorm import DatabaseSettings, RepositoriesContainer
from .models import (
AuthorRepository,
BookRepository,
ProductRepository,
UserRepository,
)
@pytest.fixture
def database_settings() -> DatabaseSettings:
return DatabaseSettings(
dsn="sqlite+aiosqlite:///:memory:",
pool_size=1,
pool_recycle=60,
pool_timeout=60,
)
@pytest_asyncio.fixture
async def repositories_container(
database_settings: DatabaseSettings,
) -> AsyncGenerator[RepositoriesContainer, None]:
container = RepositoriesContainer(settings=database_settings)
yield container
await container.engine.dispose()
@pytest_asyncio.fixture
async def user_repository(
repositories_container: RepositoriesContainer,
) -> AsyncGenerator[UserRepository, None]:
repository = repositories_container.get_repository(UserRepository)
await repository.create_tables()
yield repository
@pytest_asyncio.fixture
async def product_repository_settings(
database_settings: DatabaseSettings,
) -> AsyncGenerator[ProductRepository, None]:
repository = ProductRepository(settings=database_settings)
await repository.create_tables()
yield repository
@pytest_asyncio.fixture
async def book_repository(
repositories_container: RepositoriesContainer,
) -> AsyncGenerator[BookRepository, None]:
repository = repositories_container.get_repository(BookRepository)
await repository.create_tables()
yield repository
@pytest_asyncio.fixture
async def author_repository(
repositories_container: RepositoriesContainer,
) -> AsyncGenerator[AuthorRepository, None]:
repository = repositories_container.get_repository(AuthorRepository)
await repository.create_tables()
yield repository