mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-25 07:00:48 +09:00
feat: move default model into user settings
This commit is contained in:
@@ -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
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user