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:
@@ -5,6 +5,7 @@ from app.repositories.audit import create_audit_event
|
||||
from app.repositories.scheme_groups import (
|
||||
create_scheme_version_group,
|
||||
delete_scheme_version_group_by_record_id,
|
||||
get_scheme_version_group_by_record_id,
|
||||
list_scheme_version_groups,
|
||||
update_scheme_version_group_by_record_id,
|
||||
)
|
||||
@@ -12,12 +13,14 @@ from app.repositories.scheme_seats import (
|
||||
bulk_update_scheme_version_seats_by_record_id,
|
||||
cascade_update_seat_group_reference,
|
||||
cascade_update_seat_sector_reference,
|
||||
get_scheme_version_seat_by_record_id,
|
||||
list_scheme_version_seats,
|
||||
update_scheme_version_seat_by_record_id,
|
||||
)
|
||||
from app.repositories.scheme_sectors import (
|
||||
create_scheme_version_sector,
|
||||
delete_scheme_version_sector_by_record_id,
|
||||
get_scheme_version_sector_by_record_id,
|
||||
list_scheme_version_sectors,
|
||||
update_scheme_version_sector_by_record_id,
|
||||
)
|
||||
@@ -154,6 +157,85 @@ async def get_draft_validation(
|
||||
}
|
||||
|
||||
|
||||
@router.get(f"{settings.api_v1_prefix}/schemes/{{scheme_id}}/draft/seats/records/{{seat_record_id}}", response_model=DraftSeatItem)
|
||||
async def get_draft_seat_by_record_id(
|
||||
scheme_id: str,
|
||||
seat_record_id: str,
|
||||
role: str = Depends(require_api_key),
|
||||
):
|
||||
_scheme, version = await get_current_draft_context(scheme_id)
|
||||
row = await get_scheme_version_seat_by_record_id(
|
||||
scheme_version_id=version.scheme_version_id,
|
||||
seat_record_id=seat_record_id,
|
||||
)
|
||||
return DraftSeatItem(
|
||||
seat_record_id=row.seat_record_id,
|
||||
scheme_id=row.scheme_id,
|
||||
scheme_version_id=row.scheme_version_id,
|
||||
element_id=row.element_id,
|
||||
seat_id=row.seat_id,
|
||||
sector_id=row.sector_id,
|
||||
group_id=row.group_id,
|
||||
row_label=row.row_label,
|
||||
seat_number=row.seat_number,
|
||||
tag=row.tag,
|
||||
classes_raw=row.classes_raw,
|
||||
x=row.x,
|
||||
y=row.y,
|
||||
cx=row.cx,
|
||||
cy=row.cy,
|
||||
width=row.width,
|
||||
height=row.height,
|
||||
created_at=row.created_at.isoformat(),
|
||||
)
|
||||
|
||||
|
||||
@router.get(f"{settings.api_v1_prefix}/schemes/{{scheme_id}}/draft/sectors/records/{{sector_record_id}}", response_model=DraftSectorItem)
|
||||
async def get_draft_sector_by_record_id(
|
||||
scheme_id: str,
|
||||
sector_record_id: str,
|
||||
role: str = Depends(require_api_key),
|
||||
):
|
||||
_scheme, version = await get_current_draft_context(scheme_id)
|
||||
row = await get_scheme_version_sector_by_record_id(
|
||||
scheme_version_id=version.scheme_version_id,
|
||||
sector_record_id=sector_record_id,
|
||||
)
|
||||
return DraftSectorItem(
|
||||
sector_record_id=row.sector_record_id,
|
||||
scheme_id=row.scheme_id,
|
||||
scheme_version_id=row.scheme_version_id,
|
||||
element_id=row.element_id,
|
||||
sector_id=row.sector_id,
|
||||
name=row.name,
|
||||
classes_raw=row.classes_raw,
|
||||
created_at=row.created_at.isoformat(),
|
||||
)
|
||||
|
||||
|
||||
@router.get(f"{settings.api_v1_prefix}/schemes/{{scheme_id}}/draft/groups/records/{{group_record_id}}", response_model=DraftGroupItem)
|
||||
async def get_draft_group_by_record_id(
|
||||
scheme_id: str,
|
||||
group_record_id: str,
|
||||
role: str = Depends(require_api_key),
|
||||
):
|
||||
_scheme, version = await get_current_draft_context(scheme_id)
|
||||
row = await get_scheme_version_group_by_record_id(
|
||||
scheme_version_id=version.scheme_version_id,
|
||||
group_record_id=group_record_id,
|
||||
)
|
||||
return DraftGroupItem(
|
||||
group_record_id=row.group_record_id,
|
||||
scheme_id=row.scheme_id,
|
||||
scheme_version_id=row.scheme_version_id,
|
||||
element_id=row.element_id,
|
||||
group_id=row.group_id,
|
||||
name=row.name,
|
||||
classes_raw=row.classes_raw,
|
||||
created_at=row.created_at.isoformat(),
|
||||
)
|
||||
|
||||
|
||||
@router.get(f"{settings.api_v1_prefix}/schemes/{{scheme_id}}/draft/compare-preview", response_model=StructureDiffResponse)
|
||||
async def get_draft_compare_preview(
|
||||
scheme_id: str,
|
||||
|
||||
Reference in New Issue
Block a user