ocs_doc_api: Phase 4 set_view + viewport-view query

- SetViewportView op + GetViewportView query (append-only).
- backend set_viewport_view (update Viewport.view_target/view_height) + viewport_view.
- facade Entity::set_view/viewport_view (Viewport returns Entity).
- spec Viewport methods; api_reference + binding_schema regenerated; mocks + baseline.
- Test phase4_set_view_and_view_query -> 609 host lib + 3 consistency green.
- Phase 4 complete.
This commit is contained in:
Sebastian committed 2026-09-06 10:16:27 +02:00
1 parent 67655add72
commit e6c132e0eb
15 files changed
+187 -7

No files matched your search

+14
View File
@@ -237,6 +237,16 @@ pub fn apply_op<B: DocApiBackend>(b: &mut B, op: Operation) -> ApiResult<Receipt
b.finalize_op();
OpOutcome::Updated(*id)
}
Operation::SetViewportView { id, view_target, view_height } => {
b.can_modify(*id).map_err(|e| match e {
ApiError::UnknownId(_) => ApiError::validation(name, format!("unknown ObjectId {id:?}")),
other => other,
})?;
b.push_undo(name);
b.set_viewport_view(*id, *view_target, *view_height)?;
b.finalize_op();
OpOutcome::Updated(*id)
}
};
Ok(Receipt {
outcome: Some(outcome),
@@ -279,6 +289,10 @@ pub fn apply_queries<B: DocApiBackend>(b: &mut B, queries: Vec<Query>) -> ApiRes
Query::GetDimensionMeasurement { id } => QueryResult::DimensionMeasurement(b.dimension_measurement(*id)?),
Query::GetAttributes { id } => QueryResult::Attributes(b.attributes(*id)?),
Query::GetBlockEntities { block_name } => QueryResult::BlockEntities(b.block_entities(block_name)?),
Query::GetViewportView { id } => {
let (target, height) = b.viewport_view(*id)?;
QueryResult::ViewportView { target, height }
}
};
results.push(r);
}