diff --git a/Cargo.lock b/Cargo.lock index caa4930..2a0b3ff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -116,7 +116,7 @@ dependencies = [ ] [[package]] -name = "geormerge-demo" +name = "geomerge-demo" version = "0.1.0" dependencies = [ "geomerge", diff --git a/crates/geormerge-demo/Cargo.toml b/crates/geomerge-demo/Cargo.toml similarity index 89% rename from crates/geormerge-demo/Cargo.toml rename to crates/geomerge-demo/Cargo.toml index 116a229..b9336e7 100644 --- a/crates/geormerge-demo/Cargo.toml +++ b/crates/geomerge-demo/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "geormerge-demo" +name = "geomerge-demo" version = "0.1.0" edition.workspace = true license.workspace = true diff --git a/crates/geomerge-demo/README.md b/crates/geomerge-demo/README.md new file mode 100644 index 0000000..0f804c4 --- /dev/null +++ b/crates/geomerge-demo/README.md @@ -0,0 +1,35 @@ +## Geomerge Demo + +This demo shows how to store and read data from Geomerge. + +The demo: +1. loads the compiled `paths.json` schema, +2. creates a Geomerge store, +3. inserts a small graph dataset in one transaction, +4. reads the inserted edge back, +5. persists the store to bytes, +6. reloads it, and checks that the restored store matches the original. + +![Workflow Diagram](docs/diagrams/workflow.svg) + +The SVG is generated from `docs/diagrams/workflow.dot`. To regenerate it after editing the `.dot` source, run: + +```sh +bash docs/diagrams/make_figures.sh docs/diagrams +``` + +### Run + +```sh +cargo run -p geomerge-demo +``` + +Expected output includes table and law counts, row counts for graphs, vertices, and edges, edge endpoints, and persisted byte size. + +### Test + +```sh +cargo test -p geomerge-demo +``` + +The tests cover the successful store, read, and persistence round trip, plus a rejected invalid edge insert that must leave the store unchanged. diff --git a/crates/geomerge-demo/docs/diagrams/make_figures.sh b/crates/geomerge-demo/docs/diagrams/make_figures.sh new file mode 100755 index 0000000..6d30150 --- /dev/null +++ b/crates/geomerge-demo/docs/diagrams/make_figures.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# You need to have Graphviz installed to run this script +# On Debian-based OSes, you can install it using: sudo apt-get install graphviz + +# Directory containing .dot files. Defaults to the script's own directory so the +# script works regardless of the caller's working directory. +SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +ASSET_DIR=${1:-"${SCRIPT_DIR}"} + +# Make figures from .dot files +for f in "${ASSET_DIR}"/*.dot; do + dot -Tsvg "$f" -o "${f%.dot}.svg" +done diff --git a/crates/geormerge-demo/docs/diagrams/workflow.dot b/crates/geomerge-demo/docs/diagrams/workflow.dot similarity index 99% rename from crates/geormerge-demo/docs/diagrams/workflow.dot rename to crates/geomerge-demo/docs/diagrams/workflow.dot index addc8af..ee724d2 100644 --- a/crates/geormerge-demo/docs/diagrams/workflow.dot +++ b/crates/geomerge-demo/docs/diagrams/workflow.dot @@ -36,7 +36,7 @@ fixture_rows [label = "Fixture Rows\n(graphs, vertices, edge)", fillcolor = "#E8 } subgraph cluster_demo { -label = "geormerge-demo (run_demo)" +label = "geomerge-demo (run_demo)" style = "rounded" color = "#666666" fontcolor = "#333333" diff --git a/crates/geormerge-demo/docs/diagrams/workflow.svg b/crates/geomerge-demo/docs/diagrams/workflow.svg similarity index 99% rename from crates/geormerge-demo/docs/diagrams/workflow.svg rename to crates/geomerge-demo/docs/diagrams/workflow.svg index 3c497a4..23f3e81 100644 --- a/crates/geormerge-demo/docs/diagrams/workflow.svg +++ b/crates/geomerge-demo/docs/diagrams/workflow.svg @@ -17,7 +17,7 @@ cluster_demo -geormerge-demo (run_demo) +geomerge-demo (run_demo) cluster_loading diff --git a/crates/geormerge-demo/src/main.rs b/crates/geomerge-demo/src/main.rs similarity index 100% rename from crates/geormerge-demo/src/main.rs rename to crates/geomerge-demo/src/main.rs diff --git a/crates/geormerge-demo/README.md b/crates/geormerge-demo/README.md deleted file mode 100644 index d57ee6b..0000000 --- a/crates/geormerge-demo/README.md +++ /dev/null @@ -1,29 +0,0 @@ -## Geomerge Demo - -This demo show how to store and read data from Geomerge. - -The demo -1. loads the compiled `paths.json` schema -2. creates a Geomerge store -3. inserts a small graph dataset in one transaction -4. reads the inserted edge back -5. persists the store to bytes -6. reloads it and checks that the restored store matches the original. - -![Workflow Diagram](docs/diagrams/workflow.svg) - -### Run - -```sh -cargo run -p geormerge-demo -``` - -Expected output includes table and law counts, stored graph row counts, edge endpoints, and persisted byte size. - -### Test - -```sh -cargo test -p geormerge-demo -``` - -The tests cover the successful store, read, and persistence round trip, plus a rejected invalid edge insert that must leave the store unchanged. diff --git a/crates/geormerge-demo/docs/diagrams/make_figures.sh b/crates/geormerge-demo/docs/diagrams/make_figures.sh deleted file mode 100644 index c688dcc..0000000 --- a/crates/geormerge-demo/docs/diagrams/make_figures.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -# You need to have Graphviz installed to run this script -# On Debian-based OSes, you can install it using: sudo apt-get install graphviz - -# Directory containing .dot files (with default value) -ASSET_DIR=${1:-"."} - -# Make figures from .dot files -for f in "${ASSET_DIR}"/*.dot; do - dot -Tsvg "$f" -o "${f%.dot}.svg" -done