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