39 lines
1.1 KiB
MySQL
39 lines
1.1 KiB
MySQL
|
|
-- 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;
|
||
|
|
|