from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.models.attachment_point import AttachmentPoint _RELATIONSHIPS = [ "attachment_point_name", "iso_thread", "unc_thread", "clamp_connection", "static_connection", ] async def get(db: AsyncSession, attachment_point_id: int) -> AttachmentPoint | None: return await db.get(AttachmentPoint, attachment_point_id) async def list_all( db: AsyncSession, skip: int = 0, limit: int = 100 ) -> list[AttachmentPoint]: result = await db.execute( select(AttachmentPoint) .order_by(AttachmentPoint.augmented_part_id, AttachmentPoint.id) .offset(skip) .limit(limit) ) return list(result.scalars().all()) async def create( db: AsyncSession, *, augmented_part_id: int, attachment_point_name_id: int, iso_thread_id: int | None = None, unc_thread_id: int | None = None, clamp_connection_id: int | None = None, static_connection_id: int | None = None, ) -> AttachmentPoint: ap = AttachmentPoint( augmented_part_id=augmented_part_id, attachment_point_name_id=attachment_point_name_id, iso_thread_id=iso_thread_id, unc_thread_id=unc_thread_id, clamp_connection_id=clamp_connection_id, static_connection_id=static_connection_id, ) db.add(ap) await db.commit() await db.refresh(ap, attribute_names=_RELATIONSHIPS) return ap async def update( db: AsyncSession, ap: AttachmentPoint, data: dict ) -> AttachmentPoint: for field, value in data.items(): setattr(ap, field, value) await db.commit() await db.refresh(ap, attribute_names=_RELATIONSHIPS) return ap async def delete(db: AsyncSession, ap: AttachmentPoint) -> None: await db.delete(ap) await db.commit()