Skip to content

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_uid enum 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_uid based on existing name column

  • Add validation to ensure name_uid is 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

  1. Add name_uid column as nullable initially
  2. Backfill data based on existing name values
  3. Add not-null constraint after backfill
  4. Add unique index on name_uid

Acceptance Criteria

  • name_uid column added to plans table
  • All existing plans have correct name_uid values
  • Enum is properly defined in Plan model
  • Migration is reversible
  • No data loss during migration
  • Backward compatibility maintained

References

Edited by Bishwa Hang Rai