Add project variants and UI updates

This commit is contained in:
Mikhail Chusavitin
2026-02-13 19:27:48 +03:00
parent 4e1a46bd71
commit 9b5d57902d
23 changed files with 1113 additions and 147 deletions

View File

@@ -0,0 +1,38 @@
-- 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);

View File

@@ -0,0 +1,28 @@
-- Add project variant and reset codes from project names
ALTER TABLE qt_projects
ADD COLUMN variant VARCHAR(100) NOT NULL DEFAULT '' AFTER code;
-- Drop legacy unique index on code to allow duplicate codes
DROP INDEX IF EXISTS idx_qt_projects_code ON qt_projects;
DROP INDEX IF EXISTS idx_qt_projects_code_variant ON qt_projects;
-- Reset code from name and clear variant
UPDATE qt_projects
SET code = LEFT(TRIM(COALESCE(name, '')), 100),
variant = '';
-- De-duplicate by assigning variant numbers: -2, -3...
UPDATE qt_projects p
JOIN (
SELECT p1.id,
p1.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 = r.code,
p.variant = CASE WHEN r.rn = 1 THEN '' ELSE CONCAT('-', r.rn) END;
CREATE UNIQUE INDEX idx_qt_projects_code_variant ON qt_projects(code, variant);

View File

@@ -0,0 +1,4 @@
-- Allow NULL project names
ALTER TABLE qt_projects
MODIFY COLUMN name VARCHAR(200) NULL;