Model option planning
This commit is contained in:
parent
b7b012fff6
commit
aa4d6dd811
100
plan/moop.puml
Normal file
100
plan/moop.puml
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
@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
|
||||||
105
plan/moop.sqlite3
Normal file
105
plan/moop.sqlite3
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
PRAGMA foreign_keys = ON;
|
||||||
|
|
||||||
|
BEGIN;
|
||||||
|
|
||||||
|
-- OPTION
|
||||||
|
|
||||||
|
CREATE TABLE moop_model_set (
|
||||||
|
id BLOB PRIMARY KEY NOT NULL,
|
||||||
|
name TEXT NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE moop_model_type (
|
||||||
|
id BLOB PRIMARY KEY NOT NULL,
|
||||||
|
type TEXT NOT NULL UNIQUE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE moop_model_set_type (
|
||||||
|
id BLOB PRIMARY KEY NOT NULL,
|
||||||
|
"set" BLOB NOT NULL,
|
||||||
|
type BLOB NOT NULL,
|
||||||
|
FOREIGN KEY ("set")
|
||||||
|
REFERENCES moop_model_set(id)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY (type)
|
||||||
|
REFERENCES moop_model_type(id)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
ON DELETE CASCADE,
|
||||||
|
UNIQUE ("set", type),
|
||||||
|
UNIQUE (id, type)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE moop_model_type_default (
|
||||||
|
id BLOB PRIMARY KEY NOT NULL,
|
||||||
|
type BLOB NOT NULL UNIQUE,
|
||||||
|
set_type BLOB NOT NULL UNIQUE,
|
||||||
|
FOREIGN KEY (type)
|
||||||
|
REFERENCES moop_model_type(id)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY (set_type, type)
|
||||||
|
REFERENCES moop_model_set_type(id, type)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
-- PROVIDER
|
||||||
|
|
||||||
|
CREATE TABLE moop_api (
|
||||||
|
id BLOB PRIMARY KEY NOT NULL,
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
baseurl TEXT NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE moop_key (
|
||||||
|
id BLOB PRIMARY KEY NOT NULL,
|
||||||
|
key TEXT NOT NULL,
|
||||||
|
priority INTEGER NULL,
|
||||||
|
api BLOB NOT NULL,
|
||||||
|
FOREIGN KEY (api)
|
||||||
|
REFERENCES moop_api(id)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE moop_model (
|
||||||
|
id BLOB PRIMARY KEY NOT NULL,
|
||||||
|
api BLOB NOT NULL,
|
||||||
|
"set" BLOB NOT NULL,
|
||||||
|
model TEXT NOT NULL,
|
||||||
|
priority INTEGER NULL,
|
||||||
|
FOREIGN KEY (api)
|
||||||
|
REFERENCES moop_api(id)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY ("set")
|
||||||
|
REFERENCES moop_model_set(id)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
-- INDEXES
|
||||||
|
|
||||||
|
CREATE INDEX idx_moop_key_api
|
||||||
|
ON moop_key(api);
|
||||||
|
|
||||||
|
CREATE INDEX idx_moop_key_api_priority
|
||||||
|
ON moop_key(api, priority);
|
||||||
|
|
||||||
|
CREATE INDEX idx_moop_model_api
|
||||||
|
ON moop_model(api);
|
||||||
|
|
||||||
|
CREATE INDEX idx_moop_model_set
|
||||||
|
ON moop_model("set");
|
||||||
|
|
||||||
|
CREATE INDEX idx_moop_model_api_priority
|
||||||
|
ON moop_model(api, priority);
|
||||||
|
|
||||||
|
CREATE INDEX idx_moop_model_set_type_set
|
||||||
|
ON moop_model_set_type("set");
|
||||||
|
|
||||||
|
CREATE INDEX idx_moop_model_set_type_type
|
||||||
|
ON moop_model_set_type(type);
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
Loading…
Reference in New Issue
Block a user