mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
Feature: avoid duplicates for the same period in acc period user history
This commit is contained in:
parent
90be68002a
commit
a7c3089736
28
.changes/unreleased/Feature-20230627-151615.yaml
Normal file
28
.changes/unreleased/Feature-20230627-151615.yaml
Normal file
@ -0,0 +1,28 @@
|
||||
kind: Feature
|
||||
body: "Force accompanying period user history to be unique for the same period and
|
||||
stardate/enddate [:warning: may encounter migration issue]"
|
||||
time: 2023-06-27T15:16:15.775571488+02:00
|
||||
custom:
|
||||
Issue: ""
|
||||
Long: "If some issue is encountered during migration, use this SQL to find the line which are in conflict, examine the problem and delete some of the concerning line
|
||||
|
||||
```sql
|
||||
|
||||
-- to see the line which are in conflict with another one
|
||||
|
||||
SELECT o.*
|
||||
|
||||
FROM chill_person_accompanying_period_user_history o
|
||||
|
||||
JOIN chill_person_accompanying_period_user_history c ON o.id < c.id AND o.accompanyingperiod_id = c.accompanyingperiod_id
|
||||
|
||||
WHERE tsrange(o.startdate, o.enddate, '[)') && tsrange(c.startdate, c.enddate, '[)')
|
||||
|
||||
ORDER BY accompanyingperiod_id;
|
||||
|
||||
-- to examine line in conflict for a given accompanyingperiod_id (given by the previous query)
|
||||
|
||||
SELECT * FROM chill_person_accompanying_period_user_history WHERE accompanyingperiod_id = IIIIDDDD order by startdate, enddate;
|
||||
|
||||
```
|
||||
"
|
@ -0,0 +1,36 @@
|
||||
<?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;
|
||||
|
||||
final class Version20230627130331 extends AbstractMigration
|
||||
{
|
||||
public function getDescription(): string
|
||||
{
|
||||
return 'Add constraint to force unicity on chill_person_accompanying_period_user_history';
|
||||
}
|
||||
|
||||
public function up(Schema $schema): void
|
||||
{
|
||||
$this->addSql('ALTER TABLE chill_person_accompanying_period_user_history
|
||||
ADD CONSTRAINT acc_period_user_history_not_overlaps
|
||||
EXCLUDE USING GIST (accompanyingperiod_id with =, tsrange(startdate, enddate) with &&)
|
||||
DEFERRABLE INITIALLY DEFERRED');
|
||||
}
|
||||
|
||||
public function down(Schema $schema): void
|
||||
{
|
||||
$this->addSql('ALTER TABLE chill_person_accompanying_period_user_history DROP CONSTRAINT acc_period_user_history_not_overlaps');
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user