-- name: get-provider-by-type SELECT id, created_at, updated_at, name, provider, type, config, is_default FROM ai_providers WHERE type = $1; -- name: update-provider-config UPDATE ai_providers SET config = $2, updated_at = now() WHERE type = $1; -- name: get-prompt SELECT id, created_at, updated_at, key, title, content FROM ai_prompts WHERE key = $1; -- name: get-prompts SELECT id, created_at, updated_at, key, title FROM ai_prompts ORDER BY title; -- name: get-prompt-by-id SELECT id, created_at, updated_at, key, title, content FROM ai_prompts WHERE id = $1; -- name: insert-prompt INSERT INTO ai_prompts (key, title, content) VALUES ($1, $2, $3) RETURNING id, created_at, updated_at, key, title, content; -- name: update-prompt UPDATE ai_prompts SET title = $2, content = $3, updated_at = now() WHERE id = $1 RETURNING id, created_at, updated_at, key, title, content; -- name: delete-prompt DELETE FROM ai_prompts WHERE id = $1; -- name: get-knowledge-base-items SELECT id, created_at, updated_at, type, title, content, enabled, source, source_url, embedded_fingerprint FROM ai_knowledge_base ORDER BY updated_at DESC; -- name: get-knowledge-base-item SELECT id, created_at, updated_at, type, title, content, enabled, source, source_url, embedded_fingerprint FROM ai_knowledge_base WHERE id = $1; -- name: knowledge-base-item-exists SELECT EXISTS(SELECT 1 FROM ai_knowledge_base WHERE id = $1); -- name: insert-knowledge-base-item INSERT INTO ai_knowledge_base (type, title, content, enabled, source, source_url) VALUES ($1, $2, $3, $4, $5, $6) RETURNING *; -- name: update-knowledge-base-item UPDATE ai_knowledge_base SET title = $2, content = $3, enabled = $4, updated_at = now() WHERE id = $1 RETURNING *; -- name: delete-knowledge-base-item DELETE FROM ai_knowledge_base WHERE id = $1; -- name: set-knowledge-base-embedded-fingerprint UPDATE ai_knowledge_base SET embedded_fingerprint = $2 WHERE id = $1; -- name: get-embeddable-help-articles WITH RECURSIVE published_collections AS ( SELECT c.id FROM article_collections c JOIN help_centers hc ON hc.id = c.help_center_id AND hc.is_active WHERE c.parent_id IS NULL AND c.is_published = true UNION SELECT c.id FROM article_collections c JOIN published_collections p ON c.parent_id = p.id WHERE c.is_published = true ) SELECT a.id, a.title, a.content, a.status, a.ai_enabled, a.embedded_fingerprint, a.collection_id IN (SELECT id FROM published_collections) AS is_reachable FROM help_articles a WHERE (a.status = 'published' AND a.ai_enabled) OR a.embedded_fingerprint != ''; -- name: get-embeddable-help-article WITH RECURSIVE published_collections AS ( SELECT c.id FROM article_collections c JOIN help_centers hc ON hc.id = c.help_center_id AND hc.is_active WHERE c.parent_id IS NULL AND c.is_published = true UNION SELECT c.id FROM article_collections c JOIN published_collections p ON c.parent_id = p.id WHERE c.is_published = true ) SELECT a.id, a.title, a.content, a.status, a.ai_enabled, a.embedded_fingerprint, a.collection_id IN (SELECT id FROM published_collections) AS is_reachable FROM help_articles a WHERE a.id = $1; -- name: help-article-exists SELECT EXISTS(SELECT 1 FROM help_articles WHERE id = $1); -- name: set-help-article-embedded-fingerprint UPDATE help_articles SET embedded_fingerprint = $2 WHERE id = $1; -- name: delete-orphan-help-article-embeddings DELETE FROM embeddings e WHERE e.source_type = 'help_article' AND NOT EXISTS (SELECT 1 FROM help_articles a WHERE a.id = e.source_id) RETURNING e.source_id; -- name: insert-embedding INSERT INTO embeddings (source_type, source_id, chunk_text, embedding, dimensions) VALUES ($1, $2, $3, $4, $5); -- name: delete-embeddings-by-source DELETE FROM embeddings WHERE source_type = $1 AND source_id = $2; -- name: delete-embeddings-by-source-ids DELETE FROM embeddings WHERE source_type = $1 AND source_id = ANY($2); -- name: delete-embeddings-by-source-type DELETE FROM embeddings WHERE source_type = $1; -- name: get-tags SELECT id, name FROM tags ORDER BY id; -- name: get-all-embeddings SELECT id, source_type, source_id, chunk_text, embedding, dimensions FROM embeddings; -- name: get-tools SELECT id, created_at, updated_at, name, description, url, method, auth, parameters, enabled, requires_verification, copilot_enabled, generate_reply_enabled, requires_agent_approval FROM ai_tools ORDER BY updated_at DESC; -- name: get-enabled-tools-by-ids SELECT id, created_at, updated_at, name, description, url, method, auth, parameters, enabled, requires_verification, copilot_enabled, generate_reply_enabled, requires_agent_approval FROM ai_tools WHERE enabled = true AND id = ANY($1); -- name: get-enabled-copilot-tool-ids SELECT id FROM ai_tools WHERE enabled = true AND copilot_enabled = true ORDER BY id; -- name: get-enabled-generate-reply-tool-ids SELECT id FROM ai_tools WHERE enabled = true AND generate_reply_enabled = true ORDER BY id; -- name: get-tool SELECT id, created_at, updated_at, name, description, url, method, auth, parameters, enabled, requires_verification, copilot_enabled, generate_reply_enabled, requires_agent_approval FROM ai_tools WHERE id = $1; -- name: get-tool-auth SELECT auth FROM ai_tools WHERE id = $1; -- name: insert-tool INSERT INTO ai_tools (name, description, url, method, auth, parameters, enabled, requires_verification, copilot_enabled, generate_reply_enabled, requires_agent_approval) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) RETURNING *; -- name: update-tool UPDATE ai_tools SET name = $2, description = $3, url = $4, method = $5, auth = $6, parameters = $7, enabled = $8, requires_verification = $9, copilot_enabled = $10, generate_reply_enabled = $11, requires_agent_approval = $12, updated_at = now() WHERE id = $1 RETURNING *; -- name: delete-tool DELETE FROM ai_tools WHERE id = $1; -- name: get-copilot-messages SELECT role, content FROM ( SELECT id, role, content FROM copilot_messages WHERE conversation_id = $1 AND user_id = $2 ORDER BY id DESC LIMIT $3 ) latest ORDER BY id; -- name: insert-copilot-message INSERT INTO copilot_messages (conversation_id, user_id, role, content) VALUES ($1, $2, $3, $4); -- name: delete-copilot-messages DELETE FROM copilot_messages WHERE conversation_id = $1 AND user_id = $2;