Files
QuoteForge/migrations/025_add_project_code.sql
2026-02-13 19:27:48 +03:00

39 lines
1.1 KiB
SQL

-- Add project code and enforce uniqueness
ALTER TABLE qt_projects
ADD COLUMN code VARCHAR(100) NULL AFTER owner_username;
-- Copy code from current project name (truncate to fit)
UPDATE qt_projects
SET code = LEFT(TRIM(COALESCE(name, '')), 100);
-- Fallback for any remaining blanks
UPDATE qt_projects
SET code = uuid
WHERE code IS NULL OR TRIM(code) = '';
-- Drop unique index if it already exists to allow de-duplication updates
DROP INDEX IF EXISTS idx_qt_projects_code ON qt_projects;
-- De-duplicate codes: OPS-1948-2, OPS-1948-3... (MariaDB without CTE)
UPDATE qt_projects p
JOIN (
SELECT p1.id,
p1.code AS base_code,
(
SELECT COUNT(*)
FROM qt_projects p2
WHERE p2.code = p1.code AND p2.id <= p1.id
) AS rn
FROM qt_projects p1
) r ON r.id = p.id
SET p.code = CASE
WHEN r.rn = 1 THEN r.base_code
ELSE CONCAT(LEFT(r.base_code, 90), '-', r.rn)
END;
ALTER TABLE qt_projects
MODIFY COLUMN code VARCHAR(100) NOT NULL;
CREATE UNIQUE INDEX idx_qt_projects_code ON qt_projects(code);