claude-os/migrations/add_slug_column.sql

39 lines
1.1 KiB
MySQL
Raw Normal View History

-- Migration: Add slug column to knowledge_bases table
-- Date: 2025-10-24
-- Description: Adds a URL-friendly slug column for KB-specific MCP endpoints
-- Add slug column if it doesn't exist
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'knowledge_bases' AND column_name = 'slug'
) THEN
ALTER TABLE knowledge_bases ADD COLUMN slug VARCHAR(255);
END IF;
END $$;
-- Generate slugs for existing KBs
UPDATE knowledge_bases
SET slug = LOWER(
REGEXP_REPLACE(
REGEXP_REPLACE(
REGEXP_REPLACE(name, '[^a-zA-Z0-9\s-]', '', 'g'),
'[\s_]+', '-', 'g'
),
'-+', '-', 'g'
)
)
WHERE slug IS NULL;
-- Make slug unique and not null
ALTER TABLE knowledge_bases ALTER COLUMN slug SET NOT NULL;
ALTER TABLE knowledge_bases ADD CONSTRAINT knowledge_bases_slug_unique UNIQUE (slug);
-- Create index for fast slug lookups
CREATE INDEX IF NOT EXISTS idx_kb_slug ON knowledge_bases(slug);
-- Verify migration
SELECT name, slug FROM knowledge_bases ORDER BY created_at;