aboutsummaryrefslogtreecommitdiffstats
path: root/docs/karuta-interface-layers.puml
diff options
context:
space:
mode:
authorMarcos Magueta <maguetamarcos@gmail.com>2025-12-01 18:34:31 -0300
committerGitHub <noreply@github.com>2025-12-01 18:34:31 -0300
commit8c8b32d59acc78c7c3e1e8ecae8492a1b728b482 (patch)
treeb218e550b2b09e4920af6e12db531bfd65f65929 /docs/karuta-interface-layers.puml
parente03b7c75be589d12ddc97d074abd2e3a5c6b7cdf (diff)
downloadSakura-8c8b32d59acc78c7c3e1e8ecae8492a1b728b482.tar.gz
Sakura-8c8b32d59acc78c7c3e1e8ecae8492a1b728b482.zip
Diagrams (#18)
Diffstat (limited to 'docs/karuta-interface-layers.puml')
-rw-r--r--docs/karuta-interface-layers.puml65
1 files changed, 65 insertions, 0 deletions
diff --git a/docs/karuta-interface-layers.puml b/docs/karuta-interface-layers.puml
new file mode 100644
index 0000000..cd5443e
--- /dev/null
+++ b/docs/karuta-interface-layers.puml
@@ -0,0 +1,65 @@
+@startuml karuta-interface-layers
+!theme plain
+title Karuta Interface Architecture Layers
+
+actor "Karuta Program" as Karuta
+
+package "Language Bindings" {
+ [Karuta FFI] as FFI
+ [Erlang Ports] as Ports
+ [NIF (Native)] as NIF
+}
+
+package "Stable Contract Layer" {
+ component "domino.erl" as DominoAPI {
+ [create_database/1]
+ [execute/2]
+ [query/2]
+ [transaction/2]
+ }
+}
+
+package "Command Processor" {
+ [Command Parser] as CmdParser
+ [Validator] as Validator
+ [Executor] as Executor
+}
+
+package "Implementation Layer" {
+ component "operations.erl" as Ops {
+ [create_relation/3]
+ [create_tuple/3]
+ [get_tuples_iterator/2]
+ [etc...]
+ }
+}
+
+database "Mnesia Storage" as Storage
+
+Karuta --> FFI
+Karuta --> Ports
+Karuta --> NIF
+
+FFI --> DominoAPI
+Ports --> DominoAPI
+NIF --> DominoAPI
+
+DominoAPI --> CmdParser
+CmdParser --> Validator
+Validator --> Executor
+
+Executor --> Ops
+Ops --> Storage
+
+note right of DominoAPI
+ Stable, versioned interface
+ Command format:
+ {Verb, Entity, Name, Parameters}
+
+ Examples:
+ {create, relation, employee, Schema}
+ {insert, tuple, employee, Data}
+ {query, relation, employee, Constraints}
+end note
+
+@enduml