From 7e36b6fd4934b0e7adeb7685e8a9a0425eafc1c1 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 19 Mar 2026 10:08:50 +0100 Subject: [PATCH] feat : migration for TaskRecurrence, ZimbraConfiguration, and Task calendar fields Co-Authored-By: Claude Opus 4.6 (1M context) --- migrations/Version20260319090835.php | 53 ++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 migrations/Version20260319090835.php diff --git a/migrations/Version20260319090835.php b/migrations/Version20260319090835.php new file mode 100644 index 0000000..4313ce5 --- /dev/null +++ b/migrations/Version20260319090835.php @@ -0,0 +1,53 @@ +addSql('CREATE TABLE task_recurrence (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, type VARCHAR(255) NOT NULL, interval INT NOT NULL, days_of_week JSON DEFAULT NULL, day_of_month INT DEFAULT NULL, week_of_month INT DEFAULT NULL, end_date DATE DEFAULT NULL, max_occurrences INT DEFAULT NULL, occurrence_count INT NOT NULL, version INT DEFAULT 1 NOT NULL, PRIMARY KEY (id))'); + $this->addSql('CREATE TABLE zimbra_configuration (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, server_url VARCHAR(255) DEFAULT NULL, username VARCHAR(255) DEFAULT NULL, encrypted_password TEXT DEFAULT NULL, calendar_path VARCHAR(255) DEFAULT NULL, enabled BOOLEAN NOT NULL, PRIMARY KEY (id))'); + $this->addSql('ALTER TABLE task ADD scheduled_start TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL'); + $this->addSql('ALTER TABLE task ADD scheduled_end TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL'); + $this->addSql('ALTER TABLE task ADD deadline TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL'); + $this->addSql('ALTER TABLE task ADD sync_to_calendar BOOLEAN DEFAULT false NOT NULL'); + $this->addSql('ALTER TABLE task ADD calendar_event_uid VARCHAR(255) DEFAULT NULL'); + $this->addSql('ALTER TABLE task ADD calendar_todo_uid VARCHAR(255) DEFAULT NULL'); + $this->addSql('ALTER TABLE task ADD calendar_sync_error TEXT DEFAULT NULL'); + $this->addSql('ALTER TABLE task ADD recurrence_id INT DEFAULT NULL'); + $this->addSql('ALTER TABLE task ADD CONSTRAINT FK_527EDB252C414CE8 FOREIGN KEY (recurrence_id) REFERENCES task_recurrence (id) ON DELETE SET NULL NOT DEFERRABLE'); + $this->addSql('CREATE INDEX IDX_527EDB252C414CE8 ON task (recurrence_id)'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('DROP TABLE task_recurrence'); + $this->addSql('DROP TABLE zimbra_configuration'); + $this->addSql('ALTER TABLE task DROP CONSTRAINT FK_527EDB252C414CE8'); + $this->addSql('DROP INDEX IDX_527EDB252C414CE8'); + $this->addSql('ALTER TABLE task DROP scheduled_start'); + $this->addSql('ALTER TABLE task DROP scheduled_end'); + $this->addSql('ALTER TABLE task DROP deadline'); + $this->addSql('ALTER TABLE task DROP sync_to_calendar'); + $this->addSql('ALTER TABLE task DROP calendar_event_uid'); + $this->addSql('ALTER TABLE task DROP calendar_todo_uid'); + $this->addSql('ALTER TABLE task DROP calendar_sync_error'); + $this->addSql('ALTER TABLE task DROP recurrence_id'); + } +}