You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

45 lines
1.3 KiB

-- Migration: Move existing kanban boards to documents table
-- This creates document entries for each kanban_board with type 'kanban'
-- The content field stores reference to the board_id for backwards compatibility
-- Insert existing kanban boards as documents
INSERT INTO documents (id, org_id, parent_id, type, name, path, position, content, created_by, created_at, updated_at)
SELECT
kb.id,
kb.org_id,
NULL as parent_id,
'kanban' as type,
kb.name,
'/' || kb.name as path,
COALESCE((
SELECT COUNT(*) FROM documents d
WHERE d.org_id = kb.org_id AND d.parent_id IS NULL
), 0) as position,
jsonb_build_object(
'type', 'kanban',
'board_id', kb.id
) as content,
COALESCE(kb.created_by, (
SELECT user_id FROM org_members
WHERE org_id = kb.org_id
ORDER BY invited_at ASC
LIMIT 1
)) as created_by,
kb.created_at,
kb.created_at as updated_at
FROM kanban_boards kb
WHERE NOT EXISTS (
SELECT 1 FROM documents d
WHERE d.id = kb.id
);
-- Update any duplicate paths by appending board ID
UPDATE documents
SET path = path || '-' || SUBSTRING(id::text, 1, 8)
WHERE type = 'kanban'
AND id IN (
SELECT d1.id
FROM documents d1
JOIN documents d2 ON d1.path = d2.path AND d1.id != d2.id
WHERE d1.type = 'kanban'
);