From 8c8b32d59acc78c7c3e1e8ecae8492a1b728b482 Mon Sep 17 00:00:00 2001 From: Marcos Magueta Date: Mon, 1 Dec 2025 18:34:31 -0300 Subject: Diagrams (#18) --- docs/command-interface.puml | 58 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 docs/command-interface.puml (limited to 'docs/command-interface.puml') diff --git a/docs/command-interface.puml b/docs/command-interface.puml new file mode 100644 index 0000000..4c0319a --- /dev/null +++ b/docs/command-interface.puml @@ -0,0 +1,58 @@ +@startuml command-interface +!theme plain +title Command-Based Interface Flow + +participant "Karuta" as K +participant "domino:execute/2" as API +participant "Command Validator" as V +participant "operations.erl" as Ops +database "Mnesia" as DB + +K -> API: execute(DB0, {create, relation, employee, Schema}) +activate API +API -> V: validate({create, relation, ...}) +activate V +V -> V: check schema format +V -> V: verify types +V --> API: ok +deactivate V + +API -> Ops: create_relation(DB0, employee, Schema) +activate Ops +Ops -> DB: transaction(fn -> ... end) +activate DB +DB -> DB: insert relation record +DB -> DB: update database tree +DB --> Ops: {atomic, {NewDB, Hash}} +deactivate DB +Ops --> API: {NewDB, Hash} +deactivate Ops + +API --> K: {ok, DB1, {relation_created, employee, Hash}} +deactivate API + +K -> API: execute(DB1, {insert, tuple, employee, Data}) +activate API +API -> V: validate({insert, tuple, ...}) +activate V +V -> V: check schema compliance +V -> V: verify constraints +V --> API: ok +deactivate V + +API -> Ops: create_tuple(DB1, employee, Data) +activate Ops +Ops -> DB: transaction(fn -> ... end) +activate DB +DB -> DB: store attribute values +DB -> DB: create tuple record +DB -> DB: update merkle tree +DB --> Ops: {atomic, {NewDB2, TupleHash}} +deactivate DB +Ops --> API: {NewDB2, TupleHash} +deactivate Ops + +API --> K: {ok, DB2, {tuple_inserted, TupleHash}} +deactivate API + +@enduml -- cgit v1.2.3