44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
from sqlalchemy import select
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.models.part_colour import PartColour
|
|
|
|
|
|
async def get(db: AsyncSession, part_colour_id: int) -> PartColour | None:
|
|
return await db.get(PartColour, part_colour_id)
|
|
|
|
|
|
async def get_by_name(db: AsyncSession, name: str) -> PartColour | None:
|
|
result = await db.execute(select(PartColour).where(PartColour.name == name))
|
|
return result.scalar_one_or_none()
|
|
|
|
|
|
async def list_all(
|
|
db: AsyncSession, skip: int = 0, limit: int = 100
|
|
) -> list[PartColour]:
|
|
result = await db.execute(
|
|
select(PartColour).order_by(PartColour.name).offset(skip).limit(limit)
|
|
)
|
|
return list(result.scalars().all())
|
|
|
|
|
|
async def create(db: AsyncSession, *, name: str) -> PartColour:
|
|
pc = PartColour(name=name)
|
|
db.add(pc)
|
|
await db.commit()
|
|
await db.refresh(pc)
|
|
return pc
|
|
|
|
|
|
async def update(db: AsyncSession, pc: PartColour, data: dict) -> PartColour:
|
|
for field, value in data.items():
|
|
setattr(pc, field, value)
|
|
await db.commit()
|
|
await db.refresh(pc)
|
|
return pc
|
|
|
|
|
|
async def delete(db: AsyncSession, pc: PartColour) -> None:
|
|
await db.delete(pc)
|
|
await db.commit()
|