24 lines
780 B
PL/PgSQL
24 lines
780 B
PL/PgSQL
-- Migration: 003_remove_material
|
|
-- Removes the material segment from part numbers
|
|
-- Old format: {project}-{category}-{material}-{sequence} (e.g., CS100-F01-316-0001)
|
|
-- New format: {project}-{category}-{sequence} (e.g., CS100-F01-0001)
|
|
|
|
BEGIN;
|
|
|
|
-- Transform existing part numbers: remove 3rd segment (material)
|
|
-- Pattern: XXXXX-CCC-MMM-NNNN -> XXXXX-CCC-NNNN
|
|
UPDATE items
|
|
SET part_number =
|
|
split_part(part_number, '-', 1) || '-' ||
|
|
split_part(part_number, '-', 2) || '-' ||
|
|
split_part(part_number, '-', 4),
|
|
updated_at = now()
|
|
WHERE part_number ~ '^[A-Z0-9]{5}-[A-Z][0-9]{2}-[A-Z0-9]{3}-[0-9]{4}$';
|
|
|
|
-- Update properties JSONB in revisions to remove material key
|
|
UPDATE revisions
|
|
SET properties = properties - 'material'
|
|
WHERE properties ? 'material';
|
|
|
|
COMMIT;
|