Preserve editable routes across source projects and REST

This commit is contained in:
2026-09-05 20:19:38 +03:00
parent 4e5a88dc4d
commit a7c6f9678c
8 changed files with 718 additions and 6 deletions
+3 -2
View File
@@ -66,7 +66,7 @@ impl ParseLimits {
project
.diagrams
.values()
.map(|d| d.nodes.len())
.map(|d| d.nodes.len().saturating_add(d.routes.len()))
.sum::<usize>(),
)
.saturating_add(project.artifact_links.len())
@@ -348,6 +348,7 @@ fn reference_field(key: &str) -> bool {
| "oa"
| "sa"
| "diagram"
| "edge"
)
}
fn enum_field(key: &str) -> bool {
@@ -1532,7 +1533,7 @@ pub(crate) fn resolve_declarations(
}
DeclKind::Diagram => {
let defaults =
serde_json::json!({"description":"","layer":"Oa","projection":"Overview"});
serde_json::json!({"description":"","layer":"Oa","projection":"Overview","routes":[]});
let mut record = merge_fields(defaults.as_object().unwrap().clone(), fields)
.map_err(&conversion_error)?;
header(&mut record, d, true);
+1 -1
View File
@@ -1429,7 +1429,7 @@ fn item_key(
"literal:{}",
&source[value.span.start..value.span.end]
)),
EditKind::Record(fields) => ["field", "referenced"].into_iter().find_map(|key| {
EditKind::Record(fields) => ["field", "referenced", "edge"].into_iter().find_map(|key| {
fields.get(key).and_then(|field| {
if let EditKind::Reference(alias) = &field.value.kind {
aliases.get(alias).map(|id| format!("{key}:{id}"))