148 lines
4.4 KiB
Plaintext
148 lines
4.4 KiB
Plaintext
digraph GeologQueryEngineNarrow {
|
|
fontname = "Helvetica,Arial,sans-serif"
|
|
layout = dot
|
|
rankdir = LR
|
|
ranksep = 0.9;
|
|
nodesep = 0.7;
|
|
splines = true;
|
|
compound = true;
|
|
bgcolor = "white"
|
|
|
|
node [
|
|
fontname = "Helvetica,Arial,sans-serif",
|
|
shape = box,
|
|
style = "filled,rounded",
|
|
color = "#555555",
|
|
fillcolor = "white",
|
|
penwidth = 1.5
|
|
]
|
|
edge [
|
|
fontname = "Helvetica,Arial,sans-serif",
|
|
color = "#333333",
|
|
fontsize = 9,
|
|
fontcolor = "#555555",
|
|
labeldistance = 2.0,
|
|
penwidth = 1.2
|
|
]
|
|
|
|
subgraph cluster_frontend {
|
|
label = "Geolog Front End"
|
|
style = "rounded"
|
|
color = "#666666"
|
|
fontcolor = "#333333"
|
|
bgcolor = "#FAFAFA"
|
|
margin = 20
|
|
|
|
subgraph cluster_language {
|
|
label = "Language Pipeline"
|
|
style = "dashed"
|
|
color = "#9C27B0"
|
|
fontcolor = "#7B1FA2"
|
|
margin = 14
|
|
concrete [label = "Concrete Syntax", fillcolor = "#F3E5F5", color = "#9C27B0"]
|
|
parser [label = "Parser", fillcolor = "#F3E5F5", color = "#9C27B0"]
|
|
abstract [label = "Abstract Syntax", fillcolor = "#F3E5F5", color = "#9C27B0"]
|
|
elaborator [label = "Elaborator", fillcolor = "#F3E5F5", color = "#9C27B0"]
|
|
typed [label = "Elaborated Syntax\n(with types)", fillcolor = "#F3E5F5", color = "#9C27B0"]
|
|
lowering [label = "Lowering", fillcolor = "#F3E5F5", color = "#9C27B0"]
|
|
ir [label = "Intermediate Representation\n(backend-neutral contract)", fillcolor = "#F3E5F5", color = "#9C27B0"]
|
|
}
|
|
|
|
subgraph cluster_tools {
|
|
label = "Developer Tooling"
|
|
style = "dashed"
|
|
color = "#4CAF50"
|
|
fontcolor = "#388E3C"
|
|
margin = 14
|
|
lsp [label = "LSP\n(parsing + elaboration diagnostics)", fillcolor = "#E8F5E9", color = "#4CAF50"]
|
|
}
|
|
}
|
|
|
|
subgraph cluster_execution {
|
|
label = "Execution Layer"
|
|
style = "dashed"
|
|
color = "#4CAF50"
|
|
fontcolor = "#388E3C"
|
|
margin = 18
|
|
query_translation [label = "IR to Backend Translation", fillcolor = "#E8F5E9", color = "#4CAF50"]
|
|
}
|
|
|
|
subgraph cluster_backends {
|
|
label = "Backend Implementations"
|
|
style = "rounded"
|
|
color = "#666666"
|
|
fontcolor = "#333333"
|
|
bgcolor = "#FAFAFA"
|
|
margin = 20
|
|
|
|
subgraph cluster_inmemory {
|
|
label = "In-Memory Backend"
|
|
style = "dashed"
|
|
color = "#FF9800"
|
|
fontcolor = "#F57C00"
|
|
margin = 14
|
|
inmem_rel [label = "Relation Translation", fillcolor = "#FFF3E0", color = "#FF9800"]
|
|
inmem_laws [label = "Law / Chase Translation", fillcolor = "#FFF3E0", color = "#FF9800"]
|
|
inmem_qe [label = "In-Memory Query Engine", fillcolor = "#FFF3E0", color = "#FF9800"]
|
|
inmem_db [label = "In-Memory DB", fillcolor = "#ECEFF1", color = "#607D8B"]
|
|
}
|
|
|
|
subgraph cluster_postgres {
|
|
label = "Postgres Backend"
|
|
style = "dashed"
|
|
color = "#FF9800"
|
|
fontcolor = "#F57C00"
|
|
margin = 14
|
|
pg_schema [label = "IR to Schema", fillcolor = "#FFF3E0", color = "#FF9800"]
|
|
pg_queries [label = "IR to SQL Queries", fillcolor = "#FFF3E0", color = "#FF9800"]
|
|
pg_qe [label = "Postgres Query Engine", fillcolor = "#FFF3E0", color = "#FF9800"]
|
|
pg_db [label = "Postgres DB", fillcolor = "#ECEFF1", color = "#607D8B"]
|
|
}
|
|
|
|
subgraph cluster_rust {
|
|
label = "Rust Backend"
|
|
style = "dashed"
|
|
color = "#FF9800"
|
|
fontcolor = "#F57C00"
|
|
margin = 14
|
|
ffi [label = "FFI Haskell to Rust\n(IR marshalling)", fillcolor = "#FFF3E0", color = "#FF9800"]
|
|
rust_rel [label = "Relation Translation", fillcolor = "#FFF3E0", color = "#FF9800"]
|
|
rust_laws [label = "Law / Chase Translation", fillcolor = "#FFF3E0", color = "#FF9800"]
|
|
rust_qe [label = "Rust Query Engine", fillcolor = "#FFF3E0", color = "#FF9800"]
|
|
rust_store [label = "Rust Storage / Query Layer", fillcolor = "#ECEFF1", color = "#607D8B"]
|
|
}
|
|
}
|
|
|
|
concrete -> parser [color = "#9C27B0"]
|
|
parser -> abstract [color = "#9C27B0"]
|
|
abstract -> elaborator [color = "#9C27B0"]
|
|
elaborator -> typed [color = "#9C27B0"]
|
|
typed -> lowering [color = "#9C27B0"]
|
|
lowering -> ir [color = "#9C27B0"]
|
|
|
|
parser -> lsp [style = "dashed", color = "#4CAF50", label = "syntax info"]
|
|
elaborator -> lsp [style = "dashed", color = "#4CAF50", label = "type info"]
|
|
|
|
ir -> query_translation [color = "#4CAF50", label = "compile IR"]
|
|
|
|
query_translation -> inmem_rel [color = "#FF9800"]
|
|
query_translation -> inmem_laws [color = "#FF9800"]
|
|
query_translation -> pg_schema [color = "#FF9800"]
|
|
query_translation -> pg_queries [color = "#FF9800"]
|
|
query_translation -> ffi [color = "#FF9800"]
|
|
|
|
inmem_rel -> inmem_qe [color = "#FF9800"]
|
|
inmem_laws -> inmem_qe [color = "#FF9800"]
|
|
inmem_qe -> inmem_db [color = "#607D8B"]
|
|
|
|
pg_schema -> pg_db [color = "#607D8B"]
|
|
pg_queries -> pg_qe [color = "#FF9800"]
|
|
pg_qe -> pg_db [color = "#607D8B"]
|
|
|
|
ffi -> rust_rel [color = "#FF9800"]
|
|
ffi -> rust_laws [color = "#FF9800"]
|
|
rust_rel -> rust_qe [color = "#FF9800"]
|
|
rust_laws -> rust_qe [color = "#FF9800"]
|
|
rust_qe -> rust_store [color = "#607D8B"]
|
|
}
|