Skip to content

Commit eab47cf

Browse files
author
tchapi
committed
chore
1 parent 1fd5d47 commit eab47cf

4 files changed

Lines changed: 29 additions & 6 deletions

File tree

.github/workflows/ci.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,13 @@ jobs:
200200
php bin/console doctrine:database:create --if-not-exists --env=test
201201
php bin/console doctrine:migrations:migrate --no-interaction --env=test
202202
php bin/console doctrine:schema:validate --env=test
203+
# Full chain check: roll every migration back down, then all the way up again.
204+
# Nothing else ever runs the down() methods, so a broken rollback (wrong column
205+
# name, duplicated ALTER clause, invalid cast) stays invisible until an operator
206+
# actually needs to roll back.
207+
php bin/console doctrine:migrations:migrate first --no-interaction --env=test
208+
php bin/console doctrine:migrations:migrate --no-interaction --env=test
209+
php bin/console doctrine:schema:validate --env=test
203210
204211
- name: Run migrations (PostgreSQL)
205212
if: matrix.database == 'postgresql'
@@ -209,6 +216,13 @@ jobs:
209216
php bin/console doctrine:database:create --if-not-exists --env=test
210217
php bin/console doctrine:migrations:migrate --no-interaction --env=test
211218
php bin/console doctrine:schema:validate --skip-sync --env=test
219+
# Full chain check: roll every migration back down, then all the way up again.
220+
# Nothing else ever runs the down() methods, so a broken rollback (wrong column
221+
# name, duplicated ALTER clause, invalid cast) stays invisible until an operator
222+
# actually needs to roll back.
223+
php bin/console doctrine:migrations:migrate first --no-interaction --env=test
224+
php bin/console doctrine:migrations:migrate --no-interaction --env=test
225+
php bin/console doctrine:schema:validate --skip-sync --env=test
212226
213227
- name: Run migrations (SQLite)
214228
if: matrix.database == 'sqlite'
@@ -217,6 +231,13 @@ jobs:
217231
run: |
218232
php bin/console doctrine:migrations:migrate --no-interaction --env=test
219233
php bin/console doctrine:schema:validate --skip-sync --env=test
234+
# Full chain check: roll every migration back down, then all the way up again.
235+
# Nothing else ever runs the down() methods, so a broken rollback (wrong column
236+
# name, duplicated ALTER clause, invalid cast) stays invisible until an operator
237+
# actually needs to roll back.
238+
php bin/console doctrine:migrations:migrate first --no-interaction --env=test
239+
php bin/console doctrine:migrations:migrate --no-interaction --env=test
240+
php bin/console doctrine:schema:validate --skip-sync --env=test
220241
221242
smoke-test:
222243
name: Application Smoke Test

migrations/Version20191202091507.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ public function down(Schema $schema): void
2828
{
2929
$this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration is specific to \'mysql\'. Skipping it is fine.');
3030

31-
$this->addSql('ALTER TABLE calendarinstances CHANGE access access SMALLINT NOT NULL, CHANGE share_invitestatus share_invitestatus INT NOT NULL, CHANGE timezone timezone LONGTEXT DEFAULT NULL, CHANGE timezone timezone VARCHAR(255) CHARACTER SET utf8mb4 DEFAULT \'NULL\' COLLATE `utf8mb4_unicode_ci`');
31+
// NB: `timezone` is restored to its original VARCHAR(255); a VTIMEZONE blob longer than
32+
// that would be rejected by MySQL rather than silently truncated.
33+
$this->addSql('ALTER TABLE calendarinstances CHANGE access access SMALLINT NOT NULL, CHANGE share_invitestatus share_invitestatus INT NOT NULL, CHANGE timezone timezone VARCHAR(255) DEFAULT NULL');
3234
}
3335
}

migrations/Version20231001214112.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ public function down(Schema $schema): void
3030
{
3131
$this->skipIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration is specific to \'postgresql\'. Skipping it is fine.');
3232

33-
$this->addSql("ALTER TABLE calendarobjects ALTER COLUMN calendardata TYPE BYTEA DEFAULT NULL USING convert_from(calendardata, 'utf8')");
34-
$this->addSql("ALTER TABLE cards ALTER COLUMN carddata TYPE BYTEA DEFAULT NULL USING convert_from(carddata, 'utf8')");
35-
$this->addSql("ALTER TABLE schedulingobjects ALTER COLUMN calendardata TYPE BYTEA DEFAULT NULL USING convert_from(calendardata, 'utf8')");
33+
$this->addSql("ALTER TABLE calendarobjects ALTER COLUMN calendardata TYPE BYTEA USING convert_to(calendardata, 'utf8')");
34+
$this->addSql("ALTER TABLE cards ALTER COLUMN carddata TYPE BYTEA USING convert_to(carddata, 'utf8')");
35+
$this->addSql("ALTER TABLE schedulingobjects ALTER COLUMN calendardata TYPE BYTEA USING convert_to(calendardata, 'utf8')");
3636
}
3737
}

migrations/Version20260131161930.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ public function down(Schema $schema): void
4444

4545
// Revert public = true back to ACCESS_PUBLIC (10)
4646
if ('postgresql' === $engine) {
47-
$this->addSql('UPDATE calendarinstances SET access = 10 WHERE is_public = TRUE');
47+
$this->addSql('UPDATE calendarinstances SET access = 10 WHERE public = TRUE');
4848
} else {
49-
$this->addSql('UPDATE calendarinstances SET access = 10 WHERE is_public = 1');
49+
$this->addSql('UPDATE calendarinstances SET access = 10 WHERE public = 1');
5050
}
5151

5252
if ('mysql' === $engine) {

0 commit comments

Comments
 (0)