feat(backend): add single-record draft read endpoints
add backend read endpoints for single draft records support direct fetch of individual draft entities improve draft inspection and targeted editor workflows
This commit is contained in:
@@ -166,3 +166,26 @@ async def delete_scheme_version_group_by_record_id(
|
||||
|
||||
await session.delete(group)
|
||||
await session.commit()
|
||||
|
||||
|
||||
async def get_scheme_version_group_by_record_id(
|
||||
*,
|
||||
scheme_version_id: str,
|
||||
group_record_id: str,
|
||||
) -> SchemeGroupRecord:
|
||||
async with AsyncSessionLocal() as session:
|
||||
result = await session.execute(
|
||||
select(SchemeGroupRecord).where(
|
||||
SchemeGroupRecord.scheme_version_id == scheme_version_id,
|
||||
SchemeGroupRecord.group_record_id == group_record_id,
|
||||
)
|
||||
)
|
||||
row = result.scalar_one_or_none()
|
||||
|
||||
if row is None:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="Group record not found in current draft version",
|
||||
)
|
||||
|
||||
return row
|
||||
|
||||
@@ -114,6 +114,29 @@ async def get_scheme_version_seat_by_seat_id(
|
||||
return row
|
||||
|
||||
|
||||
async def get_scheme_version_seat_by_record_id(
|
||||
*,
|
||||
scheme_version_id: str,
|
||||
seat_record_id: str,
|
||||
) -> SchemeSeatRecord:
|
||||
async with AsyncSessionLocal() as session:
|
||||
result = await session.execute(
|
||||
select(SchemeSeatRecord).where(
|
||||
SchemeSeatRecord.scheme_version_id == scheme_version_id,
|
||||
SchemeSeatRecord.seat_record_id == seat_record_id,
|
||||
)
|
||||
)
|
||||
row = result.scalar_one_or_none()
|
||||
|
||||
if row is None:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="Seat record not found in current draft version",
|
||||
)
|
||||
|
||||
return row
|
||||
|
||||
|
||||
async def update_scheme_version_seat_by_record_id(
|
||||
*,
|
||||
scheme_version_id: str,
|
||||
|
||||
@@ -166,3 +166,26 @@ async def delete_scheme_version_sector_by_record_id(
|
||||
|
||||
await session.delete(sector)
|
||||
await session.commit()
|
||||
|
||||
|
||||
async def get_scheme_version_sector_by_record_id(
|
||||
*,
|
||||
scheme_version_id: str,
|
||||
sector_record_id: str,
|
||||
) -> SchemeSectorRecord:
|
||||
async with AsyncSessionLocal() as session:
|
||||
result = await session.execute(
|
||||
select(SchemeSectorRecord).where(
|
||||
SchemeSectorRecord.scheme_version_id == scheme_version_id,
|
||||
SchemeSectorRecord.sector_record_id == sector_record_id,
|
||||
)
|
||||
)
|
||||
row = result.scalar_one_or_none()
|
||||
|
||||
if row is None:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="Sector record not found in current draft version",
|
||||
)
|
||||
|
||||
return row
|
||||
|
||||
Reference in New Issue
Block a user