Merge branch '228-fix-export-activity-from-v1' into 'master'

Fix export for people created before 'createdAt' column introduction

Closes #228

See merge request Chill-Projet/chill-bundles!634
This commit is contained in:
Julien Fastré 2023-12-11 16:22:12 +00:00
commit 33d187f329
2 changed files with 64 additions and 0 deletions

View File

@ -0,0 +1,6 @@
kind: Fixed
body: Fix export of activity for people created before the introduction of the createdAt
column on person (during v1)
time: 2023-12-07T23:21:29.976822313+01:00
custom:
Issue: "228"

View File

@ -0,0 +1,58 @@
<?php
declare(strict_types=1);
/*
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Chill\Migrations\Person;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Fix lines in chill_person_person_center_history for people created before the introduction of the createdAt column.
*
* This class represents a migration for fixing lines in the 'chill_person_person_center_history' table.
*
* It updates the 'startdate' column for people created before the introduction
* of the 'createdAt' column, and set it at the first activity date. This migration is irreversible.
*/
final class Version20231207221700 extends AbstractMigration
{
public function getDescription(): string
{
return 'Fix lines in chill_person_person_center_history for people created before the introduction of the createdAt column';
}
public function up(Schema $schema): void
{
$this->addSql('WITH first_history_line AS (SELECT *
FROM (SELECT id,
person_id,
startdate,
rank() OVER (PARTITION BY person_id ORDER BY startdate ASC, id ASC) AS r
FROM chill_person_person_center_history) AS sk
WHERE sk.r = 1),
first_activity AS (SELECT *
FROM (SELECT id, date, person_id, rank() OVER (PARTITION BY person_id ORDER BY date ASC, id ASC) AS r
FROM activity
WHERE person_id IS NOT NULL) sq
WHERE sq.r = 1)
UPDATE chill_person_person_center_history cppch SET startdate=first_activity.date
FROM first_history_line, first_activity
WHERE
first_history_line.id = cppch.id
AND first_activity.person_id = cppch.person_id
AND first_activity.date < first_history_line.startDate');
}
public function down(Schema $schema): void
{
$this->throwIrreversibleMigrationException();
}
}