Skip to content

Commit

Permalink
chore: improve query graph rendering with graphviz (#5143)
Browse files Browse the repository at this point in the history
1. Use `{:#?}` instead of `{:?}` for better formatting where we use
   `Debug` trait to print fields of query graph nodes.

2. Left-align multiline text in graph nodes (it's centered by default).
  • Loading branch information
aqrln authored Jan 30, 2025
1 parent 476ed35 commit e2a3375
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 12 deletions.
4 changes: 2 additions & 2 deletions query-engine/core/src/query_ast/read.rs
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,12 @@ impl Display for ReadQuery {
match self {
Self::RecordQuery(q) => write!(
f,
"RecordQuery(name: '{}', selection: {}, filter: {:?})",
"RecordQuery(name: '{}', selection: {}, filter: {:#?})",
q.name, q.selected_fields, q.filter
),
Self::ManyRecordsQuery(q) => write!(
f,
r#"ManyRecordsQuery(name: '{}', model: '{}', selection: {}, args: {:?})"#,
r#"ManyRecordsQuery(name: '{}', model: '{}', selection: {}, args: {:#?})"#,
q.name,
q.model.name(),
q.selected_fields,
Expand Down
14 changes: 7 additions & 7 deletions query-engine/core/src/query_ast/write.rs
Original file line number Diff line number Diff line change
Expand Up @@ -226,29 +226,29 @@ impl std::fmt::Display for WriteQuery {
impl ToGraphviz for WriteQuery {
fn to_graphviz(&self) -> String {
match self {
Self::CreateRecord(q) => format!("CreateRecord(model: {}, args: {:?})", q.model.name(), q.args),
Self::CreateRecord(q) => format!("CreateRecord(model: {}, args: {:#?})", q.model.name(), q.args),
Self::CreateManyRecords(q) => format!(
"CreateManyRecord(model: {}, selected_fields: {:?})",
"CreateManyRecord(model: {}, selected_fields: {:#?})",
q.model.name(),
q.selected_fields
),
Self::UpdateRecord(q) => format!(
"UpdateRecord(model: {}, selection: {:?})",
"UpdateRecord(model: {}, selection: {:#?})",
q.model().name(),
q.selected_fields()
),
Self::DeleteRecord(q) => format!(
"DeleteRecord: {}, {:?}, {:?}",
"DeleteRecord: {}, {:#?}, {:#?}",
q.model.name(),
q.record_filter,
q.selected_fields
),
Self::UpdateManyRecords(q) => format!("UpdateManyRecords(model: {}, args: {:?})", q.model.name(), q.args),
Self::UpdateManyRecords(q) => format!("UpdateManyRecords(model: {}, args: {:#?})", q.model.name(), q.args),
Self::DeleteManyRecords(q) => format!("DeleteManyRecords: {}", q.model.name()),
Self::ConnectRecords(_) => "ConnectRecords".to_string(),
Self::DisconnectRecords(_) => "DisconnectRecords".to_string(),
Self::ExecuteRaw(r) => format!("ExecuteRaw: {:?}", r.inputs),
Self::QueryRaw(r) => format!("QueryRaw: {:?}", r.inputs),
Self::ExecuteRaw(r) => format!("ExecuteRaw: {:#?}", r.inputs),
Self::QueryRaw(r) => format!("QueryRaw: {:#?}", r.inputs),
Self::Upsert(q) => format!("Upsert(model: {}", q.model().name()),
}
}
Expand Down
8 changes: 5 additions & 3 deletions query-engine/core/src/query_graph/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -949,6 +949,8 @@ pub trait ToGraphviz {

impl ToGraphviz for QueryGraph {
fn to_graphviz(&self) -> String {
let label_from_node = |node: &Node| node.to_graphviz().replace('\"', "\\\"").replace('\n', "\\l") + "\\l";

let nodes = self
.graph
.node_indices()
Expand All @@ -958,7 +960,7 @@ impl ToGraphviz for QueryGraph {
format!(
" {} [label=\"{}\", fillcolor=blue, style=filled, shape=rectangle, fontcolor=white]",
idx.index(),
node.to_graphviz().replace('\"', "\\\"")
label_from_node(node)
)
} else if self
.root_nodes()
Expand All @@ -968,13 +970,13 @@ impl ToGraphviz for QueryGraph {
format!(
" {} [label=\"{}\", fillcolor=red, style=filled, shape=rectangle, fontcolor=white]",
idx.index(),
node.to_graphviz().replace('\"', "\\\"")
label_from_node(node)
)
} else {
format!(
" {} [label=\"{}\", shape=rectangle]",
idx.index(),
node.to_graphviz().replace('\"', "\\\"")
label_from_node(node)
)
}
})
Expand Down

0 comments on commit e2a3375

Please sign in to comment.