Files
fitguide/app/crud/attachment_point.py
T
2026-07-02 14:06:18 -03:00

68 lines
1.8 KiB
Python

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