blob: cd5443e0ebfcbed5fc67d5dac997bb3b7e7bc941 (
plain) (
tree)
|
|
@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
|