feat: move default model into user settings

This commit is contained in:
Acbox
2026-02-02 01:39:21 +08:00
parent ed5f41a87e
commit c731e0ca1d
20 changed files with 793 additions and 811 deletions
+3 -7
View File
@@ -79,14 +79,9 @@ 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)
);
@@ -104,8 +99,6 @@ 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);
@@ -144,6 +137,9 @@ CREATE INDEX IF NOT EXISTS idx_history_timestamp ON history(timestamp);
CREATE TABLE IF NOT EXISTS user_settings (
user_id UUID PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE,
chat_model_id TEXT,
memory_model_id TEXT,
embedding_model_id TEXT,
max_context_load_time INTEGER NOT NULL DEFAULT 1440,
language TEXT NOT NULL DEFAULT 'Same as user input'
);
+2 -12
View File
@@ -46,15 +46,14 @@ 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, enable_as)
INSERT INTO models (model_id, name, llm_provider_id, dimensions, is_multimodal, type)
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(enable_as)
sqlc.arg(type)
)
RETURNING *;
@@ -87,7 +86,6 @@ 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 *;
@@ -100,7 +98,6 @@ 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 *;
@@ -117,13 +114,6 @@ 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)
+7 -4
View File
@@ -1,15 +1,18 @@
-- name: GetSettingsByUserID :one
SELECT user_id, max_context_load_time, language
SELECT user_id, chat_model_id, memory_model_id, embedding_model_id, max_context_load_time, language
FROM user_settings
WHERE user_id = $1;
-- name: UpsertSettings :one
INSERT INTO user_settings (user_id, max_context_load_time, language)
VALUES ($1, $2, $3)
INSERT INTO user_settings (user_id, chat_model_id, memory_model_id, embedding_model_id, max_context_load_time, language)
VALUES ($1, $2, $3, $4, $5, $6)
ON CONFLICT (user_id) DO UPDATE SET
chat_model_id = EXCLUDED.chat_model_id,
memory_model_id = EXCLUDED.memory_model_id,
embedding_model_id = EXCLUDED.embedding_model_id,
max_context_load_time = EXCLUDED.max_context_load_time,
language = EXCLUDED.language
RETURNING user_id, max_context_load_time, language;
RETURNING user_id, chat_model_id, memory_model_id, embedding_model_id, max_context_load_time, language;
-- name: DeleteSettingsByUserID :exec
DELETE FROM user_settings