hendrik/plan/done/moop.puml
2026-08-14 11:30:17 +07:00

100 lines
2.2 KiB
Plaintext

@startuml
hide circle
skinparam linetype ortho
package option {
entity moop_model_set {
id : binary(40) <<PK>>
name : longtext
--
}
entity moop_model_type {
id : binary(40) <<PK>>
type : longtext
--
* type availability =
"llm" | "embedding" | "image generation"
}
entity moop_model_set_type {
id : binary(40) <<PK>>
set : binary(40) <<FK>>
type : binary(40) <<FK>>
--
* set = moop_model_set.id
on update cascade
on delete cascade
* type = moop_model_type.id
on update cascade
on delete cascade
* unique(set, type)
}
moop_model_set ||--|{ moop_model_set_type
moop_model_type ||-o{ moop_model_set_type
entity moop_model_type_default {
id : binary(40) <<PK>>
type : binary(40) unique <<FK>>
set_type : binary(40) <<FK>>
--
* type = moop_model_type.id
on update cascade
on delete cascade
* set_type = moop_model_set_type.id
on update cascade
on delete cascade
* set_type.type must equal type
* one default set per model type
}
moop_model_type ||--|| moop_model_type_default
moop_model_set_type ||--o| moop_model_type_default
}
package provider {
entity moop_api {
id : binary(40) <<PK>>
name : longtext
baseurl : longtext
--
* empty key = no bearer
}
entity moop_key {
id : binary(40) <<PK>>
key : longtext
priority : int null
api : binary(40) <<FK>>
--
* api = moop_api.id
on update cascade
on delete cascade
* null priority = disabled
}
moop_api ||--o{ moop_key
entity moop_model {
id : binary(40) <<PK>>
api : binary(40) <<FK>>
set : binary(40) <<FK>>
model : longtext
priority : int null
--
* api = moop_api.id
on update cascade
on delete cascade
* set = moop_model_set.id
on update cascade
on delete cascade
* null priority = disabled
}
moop_model_set ||-|{ moop_model
moop_api ||--|{ moop_model
}
@enduml