migrations/Version20240304190000.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.  * Auto-generated Migration: Please modify to your needs!
  8.  */
  9. final class Version20240304190000 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return '';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         # making all `user_id` columns of the same type
  18.         $this->addSql('ALTER TABLE user_points_history DROP FOREIGN KEY FK_CED765BAA76ED395');
  19.         $this->addSql('ALTER TABLE user_vouchers DROP FOREIGN KEY FK_7398E348A76ED395');
  20.         # update users.id and user_id columns as INT UNSIGNED NOT NULL
  21.         $this->addSql('ALTER TABLE users CHANGE id id INT UNSIGNED AUTO_INCREMENT NOT NULL');
  22.         $this->addSql('ALTER TABLE feedbacks CHANGE user_id user_id INT UNSIGNED NOT NULL');
  23.         $this->addSql('ALTER TABLE user_points_history CHANGE user_id user_id INT UNSIGNED NOT NULL');
  24.         $this->addSql('ALTER TABLE user_vouchers CHANGE user_id user_id INT UNSIGNED NOT NULL');
  25.         $this->addSql('ALTER TABLE user_verification_tokens CHANGE user_id user_id INT UNSIGNED NOT NULL');
  26.         # re-add fk
  27.         $this->addSql('ALTER TABLE user_points_history ADD CONSTRAINT FK_CED765BAA76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  28.         $this->addSql('ALTER TABLE user_vouchers ADD CONSTRAINT FK_7398E348A76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  29.         # remove entries that have no correspondent in `users` table
  30.         $this->addSql('DELETE FROM api_token WHERE user_id NOT IN (SELECT id FROM users)');
  31.         $this->addSql('DELETE FROM cardiometabolic_profiles WHERE user_id NOT IN (SELECT id FROM users)');
  32.         $this->addSql('DELETE FROM favourite_menus WHERE user_id NOT IN (SELECT id FROM users)');
  33.         $this->addSql('DELETE FROM favourite_menus_sessions WHERE user_id NOT IN (SELECT id FROM users)');
  34.         $this->addSql('DELETE FROM feedbacks WHERE user_id NOT IN (SELECT id FROM users)');
  35.         $this->addSql('DELETE FROM objectives WHERE user_id NOT IN (SELECT id FROM users)');
  36.         $this->addSql('DELETE FROM payments WHERE user_id NOT IN (SELECT id FROM users)');
  37.         $this->addSql('DELETE FROM user_fcm_tokens WHERE user_id NOT IN (SELECT id FROM users)');
  38.         $this->addSql('DELETE FROM user_notifications WHERE user_id NOT IN (SELECT id FROM users)');
  39.         $this->addSql('DELETE FROM user_subscriptions WHERE user_id NOT IN (SELECT id FROM users)');
  40.         $this->addSql('DELETE FROM user_verification_tokens WHERE user_id NOT IN (SELECT id FROM users)');
  41.         $this->addSql('DELETE FROM user_viewed_notifications WHERE user_id NOT IN (SELECT id FROM users)');
  42.         # add new fk
  43.         $this->addSql('ALTER TABLE api_token ADD CONSTRAINT FK_7BA2F5EBA76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  44.         $this->addSql('ALTER TABLE cardiometabolic_profiles ADD CONSTRAINT FK_ACE5AC0DA76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  45.         $this->addSql('ALTER TABLE favourite_menus ADD CONSTRAINT FK_D30089BAA76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  46.         $this->addSql('ALTER TABLE favourite_menus_sessions ADD CONSTRAINT FK_B1346200A76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  47.         $this->addSql('ALTER TABLE feedbacks ADD CONSTRAINT FK_7E6C3F89A76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  48.         $this->addSql('ALTER TABLE objectives ADD CONSTRAINT FK_6CB0696CA76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  49.         $this->addSql('ALTER TABLE payments ADD CONSTRAINT FK_65D29B32A76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  50.         $this->addSql('ALTER TABLE user_fcm_tokens ADD CONSTRAINT FK_7811FBD5A76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  51.         $this->addSql('ALTER TABLE user_notifications ADD CONSTRAINT FK_8E8E1D83A76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  52.         $this->addSql('ALTER TABLE user_subscriptions ADD CONSTRAINT FK_EAF92751A76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  53.         $this->addSql('ALTER TABLE user_verification_tokens ADD CONSTRAINT FK_EB6CD4A9A76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  54.         $this->addSql('ALTER TABLE user_viewed_notifications ADD CONSTRAINT FK_9D7C6B5AA76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  55.         # foreign key indexes
  56.         $this->addSql('ALTER TABLE api_token RENAME INDEX user_id TO IDX_7BA2F5EBA76ED395');
  57.         $this->addSql('ALTER TABLE cardiometabolic_profiles RENAME INDEX user_id TO IDX_ACE5AC0DA76ED395');
  58.         $this->addSql('ALTER TABLE favourite_menus RENAME INDEX user_id TO IDX_D30089BAA76ED395');
  59.         $this->addSql('ALTER TABLE favourite_menus_sessions RENAME INDEX user_id TO IDX_B1346200A76ED395');
  60.         $this->addSql('ALTER TABLE objectives RENAME INDEX user_id TO IDX_6CB0696CA76ED395');
  61.         $this->addSql('ALTER TABLE payments RENAME INDEX user_id TO IDX_65D29B32A76ED395');
  62.         $this->addSql('CREATE INDEX IDX_7811FBD5A76ED395 ON user_fcm_tokens (user_id)');
  63.         $this->addSql('ALTER TABLE user_notifications RENAME INDEX user_id TO IDX_8E8E1D83A76ED395');
  64.         $this->addSql('ALTER TABLE user_subscriptions RENAME INDEX user_id TO IDX_EAF92751A76ED395');
  65.         $this->addSql('CREATE INDEX IDX_EB6CD4A9A76ED395 ON user_verification_tokens (user_id)');
  66.         $this->addSql('ALTER TABLE user_viewed_notifications RENAME INDEX user_id TO IDX_9D7C6B5AA76ED395');
  67.     }
  68.     public function down(Schema $schema): void
  69.     {
  70.         # drop fks added in upgrade
  71.         $this->addSql('ALTER TABLE api_token DROP FOREIGN KEY FK_7BA2F5EBA76ED395');
  72.         $this->addSql('ALTER TABLE cardiometabolic_profiles DROP FOREIGN KEY FK_ACE5AC0DA76ED395');
  73.         $this->addSql('ALTER TABLE favourite_menus DROP FOREIGN KEY FK_D30089BAA76ED395');
  74.         $this->addSql('ALTER TABLE favourite_menus_sessions DROP FOREIGN KEY FK_B1346200A76ED395');
  75.         $this->addSql('ALTER TABLE feedbacks DROP FOREIGN KEY FK_7E6C3F89A76ED395');
  76.         $this->addSql('ALTER TABLE objectives DROP FOREIGN KEY FK_6CB0696CA76ED395');
  77.         $this->addSql('ALTER TABLE payments DROP FOREIGN KEY FK_65D29B32A76ED395');
  78.         $this->addSql('ALTER TABLE user_fcm_tokens DROP FOREIGN KEY FK_7811FBD5A76ED395');
  79.         $this->addSql('ALTER TABLE user_notifications DROP FOREIGN KEY FK_8E8E1D83A76ED395');
  80.         $this->addSql('ALTER TABLE user_subscriptions DROP FOREIGN KEY FK_EAF92751A76ED395');
  81.         $this->addSql('ALTER TABLE user_verification_tokens DROP FOREIGN KEY FK_EB6CD4A9A76ED395');
  82.         $this->addSql('ALTER TABLE user_viewed_notifications DROP FOREIGN KEY FK_9D7C6B5AA76ED395');
  83.         # foreign key indexes
  84.         $this->addSql('ALTER TABLE api_token RENAME INDEX IDX_7BA2F5EBA76ED395 TO user_id');
  85.         $this->addSql('ALTER TABLE cardiometabolic_profiles RENAME INDEX idx_ace5ac0da76ed395 TO user_id');
  86.         $this->addSql('ALTER TABLE favourite_menus RENAME INDEX idx_d30089baa76ed395 TO user_id');
  87.         $this->addSql('ALTER TABLE favourite_menus_sessions RENAME INDEX idx_b1346200a76ed395 TO user_id');
  88.         $this->addSql('ALTER TABLE objectives RENAME INDEX idx_6cb0696ca76ed395 TO user_id');
  89.         $this->addSql('ALTER TABLE payments RENAME INDEX idx_65d29b32a76ed395 TO user_id');
  90.         $this->addSql('DROP INDEX IDX_7811FBD5A76ED395 ON user_fcm_tokens');
  91.         $this->addSql('ALTER TABLE user_notifications RENAME INDEX idx_8e8e1d83a76ed395 TO user_id');
  92.         $this->addSql('ALTER TABLE user_subscriptions RENAME INDEX idx_eaf92751a76ed395 TO user_id');
  93.         $this->addSql('DROP INDEX IDX_EB6CD4A9A76ED395 ON user_verification_tokens');
  94.     $this->addSql('ALTER TABLE user_viewed_notifications RENAME INDEX idx_9d7c6b5aa76ed395 TO user_id');
  95.     # making all `user_id` columns of the same type
  96.         $this->addSql('ALTER TABLE user_points_history DROP FOREIGN KEY FK_CED765BAA76ED395');
  97.         $this->addSql('ALTER TABLE user_vouchers DROP FOREIGN KEY FK_7398E348A76ED395');
  98.         # update users.id and user_id columns as INT UNSIGNED NOT NULL
  99.         $this->addSql('ALTER TABLE users CHANGE id id INT AUTO_INCREMENT NOT NULL');
  100.         $this->addSql('ALTER TABLE feedbacks CHANGE user_id user_id INT NOT NULL');
  101.         $this->addSql('ALTER TABLE user_points_history CHANGE user_id user_id INT NOT NULL');
  102.         $this->addSql('ALTER TABLE user_vouchers CHANGE user_id user_id INT NOT NULL');
  103.         $this->addSql('ALTER TABLE user_verification_tokens CHANGE user_id user_id INT NOT NULL');
  104.         # re-add fk
  105.         $this->addSql('ALTER TABLE user_points_history ADD CONSTRAINT FK_CED765BAA76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  106.         $this->addSql('ALTER TABLE user_vouchers ADD CONSTRAINT FK_7398E348A76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE');
  107.     }
  108. }