Add name_uid enum column to plans table with backfill migration
Objective
Add the name_uid enum column to the plans table and create a migration to backfill existing data while maintaining backward compatibility.
Prerequisites
-
Spike analysis completed (#571418) -
Migration strategy approved
Tasks
-
Create migration to add name_uidenum column to plans table -
Define enum values based on existing plan names: enum :name_uid, default: 1, free: 2, bronze: 3, silver: 4, premium: 5, gold: 6, ultimate: 7, ultimate_trial: 8, ultimate_trial_paid_customer: 9, premium_trial: 10, opensource: 11 -
Create backfill migration to populate name_uidbased on existingnamecolumn -
Add validation to ensure name_uidis unique and not null -
Update Plan model to include enum definition -
Ensure backward compatibility during transition -
Test migration on staging environment -
Validate data integrity after migration
Migration Strategy
- Add
name_uidcolumn as nullable initially - Backfill data based on existing
namevalues - Add not-null constraint after backfill
- Add unique index on
name_uid
Acceptance Criteria
-
name_uidcolumn added to plans table -
All existing plans have correct name_uidvalues -
Enum is properly defined in Plan model -
Migration is reversible -
No data loss during migration -
Backward compatibility maintained
References
- Parent Epic: Convert `plans` table to be hard-coded in appli... (&19409)
- Original Issue: #519892 (closed)
- Analysis Issue: #571418
Edited by Bishwa Hang Rai