mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-25 07:00:48 +09:00
refactor(core): codebase quality cleanup
- Remove user-level model settings (chat_model_id, memory_model_id, embedding_model_id, max_context_load_time, language) from users table - Merge migration 0002 into 0001, remove compatibility migrations - Delete dead conversation/resolver.go (1177 lines, only flow/resolver.go used) - Remove type aliases (Chat=Conversation, types_alias.go) - Fix SQL: remove AND false stub, fix UpdateChatTitle model_id, reset model IDs in DeleteSettings, add preauth expiry filter, add ListMessages limit, remove 10 dead queries - Extract shared handler helpers (RequireChannelIdentityID, AuthorizeBotAccess) - Rename internal/router to internal/channel/inbound - Fix identity confusion: remove UserID->ChannelIdentityID fallbacks - Fix all _ = var patterns with proper error logging - Fix error propagation: storeMessages, rescheduleJob, botContainerID - Fix naming: ModelId->ModelID, active->is_active, Duration semantic fix - Remove dead code: mcpService, ReplyTarget, callMCPServer, sshShellQuote, buildSessionMetadata, ChatRequest.Language, TriggerPayload.ChatID - Fix code quality: errors.Is(), remove goto, CreateHuman deprecated - Remove Enable model endpoint and user-level settings CLI commands - Regenerate sqlc, swagger, SDK
This commit is contained in:
@@ -19,11 +19,6 @@ CREATE TABLE IF NOT EXISTS users (
|
||||
avatar_url TEXT,
|
||||
data_root TEXT,
|
||||
last_login_at TIMESTAMPTZ,
|
||||
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 'auto',
|
||||
is_active BOOLEAN NOT NULL DEFAULT true,
|
||||
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
@@ -39,6 +34,7 @@ CREATE TABLE IF NOT EXISTS channel_identities (
|
||||
channel_type TEXT NOT NULL,
|
||||
channel_subject_id TEXT NOT NULL,
|
||||
display_name TEXT,
|
||||
avatar_url TEXT,
|
||||
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
-- 0002_channel_identity_avatar (down)
|
||||
ALTER TABLE channel_identities DROP COLUMN IF EXISTS avatar_url;
|
||||
@@ -1,3 +0,0 @@
|
||||
-- 0002_channel_identity_avatar
|
||||
-- Add avatar_url column to channel_identities for sender profile display.
|
||||
ALTER TABLE channel_identities ADD COLUMN IF NOT EXISTS avatar_url TEXT;
|
||||
@@ -43,8 +43,3 @@ SET user_id = $2, updated_at = now()
|
||||
WHERE id = $1
|
||||
RETURNING id, user_id, channel_type, channel_subject_id, display_name, avatar_url, metadata, created_at, updated_at;
|
||||
|
||||
-- name: ClearChannelIdentityLinkedUser :one
|
||||
UPDATE channel_identities
|
||||
SET user_id = NULL, updated_at = now()
|
||||
WHERE id = $1
|
||||
RETURNING id, user_id, channel_type, channel_subject_id, display_name, avatar_url, metadata, created_at, updated_at;
|
||||
|
||||
@@ -29,9 +29,6 @@ ON CONFLICT (container_id) DO UPDATE SET
|
||||
last_stopped_at = EXCLUDED.last_stopped_at,
|
||||
updated_at = now();
|
||||
|
||||
-- name: GetContainerByContainerID :one
|
||||
SELECT * FROM containers WHERE container_id = sqlc.arg(container_id);
|
||||
|
||||
-- name: GetContainerByBotID :one
|
||||
SELECT * FROM containers WHERE bot_id = sqlc.arg(bot_id) ORDER BY updated_at DESC LIMIT 1;
|
||||
|
||||
|
||||
@@ -59,6 +59,7 @@ SELECT
|
||||
b.display_name AS title,
|
||||
b.owner_user_id AS created_by_user_id,
|
||||
b.metadata AS metadata,
|
||||
chat_models.model_id AS model_id,
|
||||
b.created_at,
|
||||
b.updated_at,
|
||||
'participant'::text AS access_mode,
|
||||
@@ -69,6 +70,7 @@ SELECT
|
||||
NULL::timestamptz AS last_observed_at
|
||||
FROM bots b
|
||||
LEFT JOIN bot_members bm ON bm.bot_id = b.id AND bm.user_id = sqlc.arg(user_id)
|
||||
LEFT JOIN models chat_models ON chat_models.id = b.chat_model_id
|
||||
WHERE b.id = sqlc.arg(bot_id)
|
||||
AND (b.owner_user_id = sqlc.arg(user_id) OR bm.user_id IS NOT NULL)
|
||||
ORDER BY b.updated_at DESC;
|
||||
@@ -102,25 +104,29 @@ SELECT
|
||||
FROM bots b
|
||||
LEFT JOIN models chat_models ON chat_models.id = b.chat_model_id
|
||||
WHERE b.id = $1
|
||||
AND false
|
||||
ORDER BY b.created_at DESC;
|
||||
|
||||
-- name: UpdateChatTitle :one
|
||||
UPDATE bots
|
||||
SET display_name = sqlc.arg(title),
|
||||
updated_at = now()
|
||||
WHERE id = sqlc.arg(id)
|
||||
RETURNING
|
||||
id,
|
||||
id AS bot_id,
|
||||
CASE WHEN type = 'public' THEN 'group' ELSE 'direct' END AS kind,
|
||||
WITH updated AS (
|
||||
UPDATE bots
|
||||
SET display_name = sqlc.arg(title),
|
||||
updated_at = now()
|
||||
WHERE bots.id = sqlc.arg(bot_id)
|
||||
RETURNING *
|
||||
)
|
||||
SELECT
|
||||
updated.id AS id,
|
||||
updated.id AS bot_id,
|
||||
CASE WHEN updated.type = 'public' THEN 'group' ELSE 'direct' END AS kind,
|
||||
NULL::uuid AS parent_chat_id,
|
||||
display_name AS title,
|
||||
owner_user_id AS created_by_user_id,
|
||||
metadata,
|
||||
NULL::text AS model_id,
|
||||
created_at,
|
||||
updated_at;
|
||||
updated.display_name AS title,
|
||||
updated.owner_user_id AS created_by_user_id,
|
||||
updated.metadata,
|
||||
chat_models.model_id AS model_id,
|
||||
updated.created_at,
|
||||
updated.updated_at
|
||||
FROM updated
|
||||
LEFT JOIN models chat_models ON chat_models.id = updated.chat_model_id;
|
||||
|
||||
-- name: TouchChat :exec
|
||||
UPDATE bots
|
||||
|
||||
@@ -6,6 +6,3 @@ VALUES (
|
||||
sqlc.arg(event_type),
|
||||
sqlc.arg(payload)
|
||||
);
|
||||
|
||||
-- name: ListLifecycleEventsByContainerID :many
|
||||
SELECT * FROM lifecycle_events WHERE container_id = sqlc.arg(container_id) ORDER BY created_at ASC;
|
||||
|
||||
@@ -56,7 +56,8 @@ SELECT
|
||||
FROM bot_history_messages m
|
||||
LEFT JOIN channel_identities ci ON ci.id = m.sender_channel_identity_id
|
||||
WHERE m.bot_id = sqlc.arg(bot_id)
|
||||
ORDER BY m.created_at ASC;
|
||||
ORDER BY m.created_at ASC
|
||||
LIMIT 10000;
|
||||
|
||||
-- name: ListMessagesSince :many
|
||||
SELECT
|
||||
|
||||
@@ -136,29 +136,9 @@ VALUES (
|
||||
)
|
||||
RETURNING *;
|
||||
|
||||
-- name: GetModelVariantByID :one
|
||||
SELECT * FROM model_variants WHERE id = sqlc.arg(id);
|
||||
|
||||
-- name: ListModelVariantsByModelUUID :many
|
||||
SELECT * FROM model_variants
|
||||
WHERE model_uuid = sqlc.arg(model_uuid)
|
||||
ORDER BY weight DESC, created_at DESC;
|
||||
|
||||
-- name: ListModelVariantsByVariantID :many
|
||||
SELECT * FROM model_variants
|
||||
WHERE variant_id = sqlc.arg(variant_id)
|
||||
ORDER BY created_at DESC;
|
||||
|
||||
-- name: UpdateModelVariant :one
|
||||
UPDATE model_variants
|
||||
SET
|
||||
variant_id = sqlc.arg(variant_id),
|
||||
weight = sqlc.arg(weight),
|
||||
metadata = sqlc.arg(metadata),
|
||||
updated_at = now()
|
||||
WHERE id = sqlc.arg(id)
|
||||
RETURNING *;
|
||||
|
||||
-- name: DeleteModelVariant :exec
|
||||
DELETE FROM model_variants WHERE id = sqlc.arg(id);
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@ RETURNING id, bot_id, token, issued_by_user_id, expires_at, used_at, created_at;
|
||||
SELECT id, bot_id, token, issued_by_user_id, expires_at, used_at, created_at
|
||||
FROM bot_preauth_keys
|
||||
WHERE token = $1
|
||||
AND used_at IS NULL
|
||||
AND (expires_at IS NULL OR expires_at > now())
|
||||
LIMIT 1;
|
||||
|
||||
-- name: MarkBotPreauthKeyUsed :one
|
||||
|
||||
+3
-16
@@ -1,19 +1,3 @@
|
||||
-- name: GetSettingsByUserID :one
|
||||
SELECT id AS user_id, chat_model_id, memory_model_id, embedding_model_id, max_context_load_time, language
|
||||
FROM users
|
||||
WHERE id = $1;
|
||||
|
||||
-- name: UpsertUserSettings :one
|
||||
UPDATE users
|
||||
SET chat_model_id = $2,
|
||||
memory_model_id = $3,
|
||||
embedding_model_id = $4,
|
||||
max_context_load_time = $5,
|
||||
language = $6,
|
||||
updated_at = now()
|
||||
WHERE id = $1
|
||||
RETURNING id AS user_id, chat_model_id, memory_model_id, embedding_model_id, max_context_load_time, language;
|
||||
|
||||
-- name: GetSettingsByBotID :one
|
||||
SELECT
|
||||
bots.id AS bot_id,
|
||||
@@ -60,5 +44,8 @@ UPDATE bots
|
||||
SET max_context_load_time = 1440,
|
||||
language = 'auto',
|
||||
allow_guest = false,
|
||||
chat_model_id = NULL,
|
||||
memory_model_id = NULL,
|
||||
embedding_model_id = NULL,
|
||||
updated_at = now()
|
||||
WHERE id = $1;
|
||||
|
||||
@@ -8,6 +8,3 @@ VALUES (
|
||||
sqlc.arg(digest)
|
||||
)
|
||||
ON CONFLICT (id) DO NOTHING;
|
||||
|
||||
-- name: ListSnapshotsByContainerID :many
|
||||
SELECT * FROM snapshots WHERE container_id = sqlc.arg(container_id) ORDER BY created_at ASC;
|
||||
|
||||
@@ -8,13 +8,6 @@ SELECT *
|
||||
FROM users
|
||||
WHERE id = $1;
|
||||
|
||||
-- name: UpdateUserStatus :one
|
||||
UPDATE users
|
||||
SET is_active = $2,
|
||||
updated_at = now()
|
||||
WHERE id = $1
|
||||
RETURNING *;
|
||||
|
||||
-- name: CreateAccount :one
|
||||
UPDATE users
|
||||
SET username = sqlc.arg(username),
|
||||
@@ -54,9 +47,6 @@ ON CONFLICT (username) DO UPDATE SET
|
||||
updated_at = now()
|
||||
RETURNING *;
|
||||
|
||||
-- name: GetAccountByUsername :one
|
||||
SELECT * FROM users WHERE username = sqlc.arg(username);
|
||||
|
||||
-- name: GetAccountByIdentity :one
|
||||
SELECT * FROM users WHERE username = sqlc.arg(identity) OR email = sqlc.arg(identity);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user