feat: allow setting default model enable as chat, memory, embedding

This commit is contained in:
Acbox
2026-01-26 21:54:46 +08:00
parent 3ff0e2c4dd
commit 35a8927a79
14 changed files with 495 additions and 59 deletions
+1
View File
@@ -1,5 +1,6 @@
DROP TABLE IF EXISTS lifecycle_events;
DROP TABLE IF EXISTS container_versions;
DROP TABLE IF EXISTS models;
DROP TABLE IF EXISTS snapshots;
DROP TABLE IF EXISTS containers;
DROP TABLE IF EXISTS users;
+9
View File
@@ -79,9 +79,14 @@ CREATE TABLE IF NOT EXISTS models (
dimensions INTEGER,
is_multimodal BOOLEAN NOT NULL DEFAULT false,
type TEXT NOT NULL DEFAULT 'chat',
enable_as TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CONSTRAINT models_model_id_unique UNIQUE (model_id),
CONSTRAINT models_enable_as_check CHECK (
(type = 'embedding' AND (enable_as = 'embedding' OR enable_as IS NULL)) OR
(type = 'chat' AND (enable_as IN ('chat', 'memory') OR enable_as IS NULL))
),
CONSTRAINT models_type_check CHECK (type IN ('chat', 'embedding')),
CONSTRAINT models_dimensions_check CHECK (type != 'embedding' OR dimensions IS NOT NULL)
);
@@ -99,6 +104,10 @@ CREATE TABLE IF NOT EXISTS model_variants (
CREATE INDEX IF NOT EXISTS idx_model_variants_model_uuid ON model_variants(model_uuid);
CREATE INDEX IF NOT EXISTS idx_model_variants_variant_id ON model_variants(variant_id);
CREATE UNIQUE INDEX IF NOT EXISTS idx_models_enable_as_unique ON models(enable_as) WHERE enable_as IS NOT NULL;
CREATE INDEX IF NOT EXISTS idx_snapshots_container_id ON snapshots(container_id);
CREATE INDEX IF NOT EXISTS idx_snapshots_parent_id ON snapshots(parent_snapshot_id);
CREATE TABLE IF NOT EXISTS container_versions (
id TEXT PRIMARY KEY,
+13 -2
View File
@@ -46,14 +46,15 @@ SELECT COUNT(*) FROM llm_providers;
SELECT COUNT(*) FROM llm_providers WHERE client_type = sqlc.arg(client_type);
-- name: CreateModel :one
INSERT INTO models (model_id, name, llm_provider_id, dimensions, is_multimodal, type)
INSERT INTO models (model_id, name, llm_provider_id, dimensions, is_multimodal, type, enable_as)
VALUES (
sqlc.arg(model_id),
sqlc.arg(name),
sqlc.arg(llm_provider_id),
sqlc.arg(dimensions),
sqlc.arg(is_multimodal),
sqlc.arg(type)
sqlc.arg(type),
sqlc.arg(enable_as)
)
RETURNING *;
@@ -86,6 +87,7 @@ SET
dimensions = sqlc.arg(dimensions),
is_multimodal = sqlc.arg(is_multimodal),
type = sqlc.arg(type),
enable_as = sqlc.arg(enable_as),
updated_at = now()
WHERE id = sqlc.arg(id)
RETURNING *;
@@ -98,6 +100,7 @@ SET
dimensions = sqlc.arg(dimensions),
is_multimodal = sqlc.arg(is_multimodal),
type = sqlc.arg(type),
enable_as = sqlc.arg(enable_as),
updated_at = now()
WHERE model_id = sqlc.arg(model_id)
RETURNING *;
@@ -114,6 +117,14 @@ SELECT COUNT(*) FROM models;
-- name: CountModelsByType :one
SELECT COUNT(*) FROM models WHERE type = sqlc.arg(type);
-- name: GetModelByEnableAs :one
SELECT * FROM models WHERE enable_as = sqlc.arg(enable_as) LIMIT 1;
-- name: ClearEnableAs :exec
UPDATE models
SET enable_as = NULL, updated_at = now()
WHERE enable_as = sqlc.arg(enable_as);
-- name: CreateModelVariant :one
INSERT INTO model_variants (model_uuid, variant_id, weight, metadata)
VALUES (