28 lines
886 B
Python
28 lines
886 B
Python
from __future__ import annotations
|
|
|
|
import uuid
|
|
from typing import Sequence
|
|
|
|
from sqlalchemy import select
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.models.distribution import Distribution
|
|
|
|
|
|
async def create(db: AsyncSession, distribution: Distribution, *, commit: bool = True) -> Distribution:
|
|
db.add(distribution)
|
|
if commit:
|
|
await db.commit()
|
|
await db.refresh(distribution)
|
|
return distribution
|
|
|
|
|
|
async def list_by_version(db: AsyncSession, version_id: uuid.UUID) -> Sequence[Distribution]:
|
|
result = await db.execute(select(Distribution).where(Distribution.version_id == version_id))
|
|
return result.scalars().all()
|
|
|
|
|
|
async def get(db: AsyncSession, distribution_id: uuid.UUID) -> Distribution | None:
|
|
result = await db.execute(select(Distribution).where(Distribution.id == distribution_id))
|
|
return result.scalar_one_or_none()
|