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()