migrations/Version20250809135930.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\Migrations\AbstractMigration;
  6. /**
  7. * Content Recommendation State Values Migration
  8. *
  9. * This migration updates the state field values in the content_recommendation table
  10. * to use the new standardized mapping:
  11. *
  12. * NEW MAPPING (after migration):
  13. * - 1 = NEW (default state for new recommendations)
  14. * - 2 = ACCEPTED (recommendation approved)
  15. * - 3 = REJECTED (recommendation declined)
  16. *
  17. * OLD MAPPING (before migration):
  18. * - 1 = ACCEPTED
  19. * - 2 = REJECTED
  20. * - 3 = NEW
  21. *
  22. * The migration preserves existing data by converting old values to new values.
  23. */
  24. final class Version20250809135930 extends AbstractMigration
  25. {
  26. public function getDescription(): string
  27. {
  28. return 'Update ContentRecommendation state values: 1=New, 2=Accepted, 3=Rejected';
  29. }
  30. public function up(Schema $schema): void
  31. {
  32. // Update existing state values to match new mapping:
  33. // Old: 1=Accepted, 2=Rejected, 3=New
  34. // New: 1=New, 2=Accepted, 3=Rejected
  35. // Create a temporary column to store the converted values
  36. $this->addSql('ALTER TABLE content_recommendation ADD COLUMN state_temp INT');
  37. // Convert the values:
  38. // Old 1 (Accepted) -> New 2 (Accepted)
  39. $this->addSql('UPDATE content_recommendation SET state_temp = 2 WHERE state = 1');
  40. // Old 2 (Rejected) -> New 3 (Rejected)
  41. $this->addSql('UPDATE content_recommendation SET state_temp = 3 WHERE state = 2');
  42. // Old 3 (New) -> New 1 (New)
  43. $this->addSql('UPDATE content_recommendation SET state_temp = 1 WHERE state = 3');
  44. // Copy converted values back to state column
  45. $this->addSql('UPDATE content_recommendation SET state = state_temp');
  46. // Drop temporary column
  47. $this->addSql('ALTER TABLE content_recommendation DROP COLUMN state_temp');
  48. }
  49. public function down(Schema $schema): void
  50. {
  51. // Revert state values to original mapping:
  52. // New: 1=New, 2=Accepted, 3=Rejected
  53. // Old: 1=Accepted, 2=Rejected, 3=New
  54. // Create a temporary column to store the converted values
  55. $this->addSql('ALTER TABLE content_recommendation ADD COLUMN state_temp INT');
  56. // Convert the values back:
  57. // New 1 (New) -> Old 3 (New)
  58. $this->addSql('UPDATE content_recommendation SET state_temp = 3 WHERE state = 1');
  59. // New 2 (Accepted) -> Old 1 (Accepted)
  60. $this->addSql('UPDATE content_recommendation SET state_temp = 1 WHERE state = 2');
  61. // New 3 (Rejected) -> Old 2 (Rejected)
  62. $this->addSql('UPDATE content_recommendation SET state_temp = 2 WHERE state = 3');
  63. // Copy converted values back to state column
  64. $this->addSql('UPDATE content_recommendation SET state = state_temp');
  65. // Drop temporary column
  66. $this->addSql('ALTER TABLE content_recommendation DROP COLUMN state_temp');
  67. }
  68. }