mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
fix search on address: do not take deleted one into account
This commit is contained in:
parent
189974d5e4
commit
31d076d49b
@ -19,7 +19,7 @@ use Symfony\Component\Serializer\Annotation\Groups;
|
||||
/**
|
||||
* @ORM\Entity
|
||||
* @ORM\Table(name="chill_main_address_reference", indexes={
|
||||
* @ORM\Index(name="address_refid", columns={"refId"}, options={"where": "refid != ''"})
|
||||
* @ORM\Index(name="address_refid", columns={"refId"})
|
||||
* })
|
||||
* @ORM\HasLifecycleCallbacks
|
||||
*/
|
||||
|
@ -130,12 +130,13 @@ final class AddressReferenceRepository implements ObjectRepository
|
||||
|
||||
$query
|
||||
->setFromClause('chill_main_address_reference cma')
|
||||
->andWhereClause('postcode_id = ?', [$postalCode->getId()]);
|
||||
->andWhereClause('postcode_id = ?', [$postalCode->getId()])
|
||||
->andWhereClause('deletedAt IS NULL', []);
|
||||
|
||||
$pertinenceClause = ['STRICT_WORD_SIMILARITY(addresscanonical, UNACCENT(?))'];
|
||||
$pertinenceArgs = [$pattern];
|
||||
$orWhere = ['addresscanonical %>> UNACCENT(?)'];
|
||||
$orWhereArgs = [$pattern];
|
||||
$andWhere = [];
|
||||
$andWhereArgs = [];
|
||||
|
||||
foreach (explode(' ', $pattern) as $part) {
|
||||
$part = trim($part);
|
||||
@ -144,8 +145,8 @@ final class AddressReferenceRepository implements ObjectRepository
|
||||
continue;
|
||||
}
|
||||
|
||||
$orWhere[] = "addresscanonical LIKE '%' || UNACCENT(LOWER(?)) || '%'";
|
||||
$orWhereArgs[] = $part;
|
||||
$andWhere[] = "(addresscanonical LIKE '%' || UNACCENT(LOWER(?)) || '%')";
|
||||
$andWhereArgs[] = $part;
|
||||
$pertinenceClause[] =
|
||||
"(EXISTS (SELECT 1 FROM unnest(string_to_array(addresscanonical, ' ')) AS t WHERE starts_with(t, UNACCENT(LOWER(?)))))::int";
|
||||
$pertinenceClause[] =
|
||||
@ -154,7 +155,7 @@ final class AddressReferenceRepository implements ObjectRepository
|
||||
}
|
||||
$query
|
||||
->setSelectPertinence(implode(' + ', $pertinenceClause), $pertinenceArgs)
|
||||
->andWhereClause(implode(' OR ', $orWhere), $orWhereArgs);
|
||||
->andWhereClause(implode(' AND ', $andWhere), $andWhereArgs);
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
@ -24,6 +24,10 @@ final class Version20220325134944 extends AbstractMigration
|
||||
$this->addSql('ALTER TABLE chill_main_address_reference DROP createdAt');
|
||||
$this->addSql('ALTER TABLE chill_main_address_reference DROP deletedAt');
|
||||
$this->addSql('ALTER TABLE chill_main_address_reference DROP updatedAt');
|
||||
$this->addSql('DROP INDEX address_refid');
|
||||
$this->addSql('create index address_refid
|
||||
on chill_main_address_reference (refid)
|
||||
where ((refid)::text <> \'\'::text)');
|
||||
}
|
||||
|
||||
public function getDescription(): string
|
||||
@ -39,5 +43,7 @@ final class Version20220325134944 extends AbstractMigration
|
||||
$this->addSql('COMMENT ON COLUMN chill_main_address_reference.createdAt IS \'(DC2Type:datetime_immutable)\'');
|
||||
$this->addSql('COMMENT ON COLUMN chill_main_address_reference.deletedAt IS \'(DC2Type:datetime_immutable)\'');
|
||||
$this->addSql('COMMENT ON COLUMN chill_main_address_reference.updatedAt IS \'(DC2Type:datetime_immutable)\'');
|
||||
$this->addSql('DROP INDEX address_refid');
|
||||
$this->addSql('CREATE INDEX address_refid ON chill_main_address_reference (refId)');
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Chill\Migrations\Main;
|
||||
|
||||
use Doctrine\DBAL\Schema\Schema;
|
||||
use Doctrine\Migrations\AbstractMigration;
|
||||
|
||||
final class Version20220506131307 extends AbstractMigration
|
||||
{
|
||||
public function down(Schema $schema): void
|
||||
{
|
||||
$this->addSql('DROP INDEX chill_internal_address_reference_canonicalized');
|
||||
$this->addSql('create index chill_internal_address_reference_canonicalized
|
||||
on chill_main_address_reference using gist (postcode_id, addresscanonical gist_trgm_ops);');
|
||||
}
|
||||
|
||||
public function getDescription(): string
|
||||
{
|
||||
return 'Adapt search index on address reference canonicalized';
|
||||
}
|
||||
|
||||
public function up(Schema $schema): void
|
||||
{
|
||||
$this->addSql('DROP INDEX chill_internal_address_reference_canonicalized');
|
||||
$this->addSql('create index chill_internal_address_reference_canonicalized
|
||||
on chill_main_address_reference using gist (postcode_id, addresscanonical gist_trgm_ops) WHERE deletedat IS NULL;');
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user