base_adresse: add indexes on on geographic models names (#66694)
gitea/passerelle/pipeline/head This commit looks good
Details
gitea/passerelle/pipeline/head This commit looks good
Details
This commit is contained in:
parent
b5995828a5
commit
38613b8b7a
|
@ -0,0 +1,69 @@
|
|||
# Generated by Django 3.2.18 on 2023-03-17 11:04
|
||||
|
||||
import django.contrib.postgres.indexes
|
||||
import django.db.models.functions.text
|
||||
from django.contrib.postgres import operations as postgresql_operations
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('base_adresse', '0030_auto_20220627_1511'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
postgresql_operations.TrigramExtension(),
|
||||
migrations.AlterField(
|
||||
model_name='citymodel',
|
||||
name='code',
|
||||
field=models.CharField(db_index=True, max_length=5, verbose_name='INSEE code'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='citymodel',
|
||||
name='zipcode',
|
||||
field=models.CharField(db_index=True, max_length=5, verbose_name='Postal code'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='streetmodel',
|
||||
name='ban_id',
|
||||
field=models.CharField(db_index=True, max_length=32, null=True, verbose_name='BAN Identifier'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='streetmodel',
|
||||
name='citycode',
|
||||
field=models.CharField(db_index=True, max_length=5, verbose_name='City Code'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='streetmodel',
|
||||
name='zipcode',
|
||||
field=models.CharField(db_index=True, max_length=5, verbose_name='Postal code'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='citymodel',
|
||||
index=models.Index(
|
||||
django.db.models.functions.text.Upper('unaccent_name'), name='base_adresse_city_name_idx'
|
||||
),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='departmentmodel',
|
||||
index=models.Index(
|
||||
django.db.models.functions.text.Upper('unaccent_name'), name='base_adresse_dept_name_idx'
|
||||
),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='regionmodel',
|
||||
index=models.Index(
|
||||
django.db.models.functions.text.Upper('unaccent_name'), name='base_adresse_region_name_idx'
|
||||
),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='streetmodel',
|
||||
index=django.contrib.postgres.indexes.GinIndex(
|
||||
django.contrib.postgres.indexes.OpClass(
|
||||
django.db.models.functions.text.Upper('unaccent_name'), 'gin_trgm_ops'
|
||||
),
|
||||
name='base_adresse_street_name_idx',
|
||||
),
|
||||
),
|
||||
]
|
|
@ -5,10 +5,12 @@ import json
|
|||
from io import StringIO
|
||||
from urllib import parse as urlparse
|
||||
|
||||
from django.contrib.postgres import indexes as postgresql_indexes
|
||||
from django.contrib.postgres.fields import JSONField
|
||||
from django.core.exceptions import FieldError
|
||||
from django.db import connection, models
|
||||
from django.db.models import Q
|
||||
from django.db.models.functions import Upper
|
||||
from django.utils import timezone
|
||||
from django.utils.http import urlencode
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
@ -680,19 +682,25 @@ class UnaccentNameMixin:
|
|||
|
||||
class StreetModel(UnaccentNameMixin, models.Model):
|
||||
|
||||
ban_id = models.CharField(_('BAN Identifier'), max_length=32, null=True)
|
||||
ban_id = models.CharField(_('BAN Identifier'), max_length=32, null=True, db_index=True)
|
||||
city = models.CharField(_('City'), max_length=150)
|
||||
name = models.CharField(_('Street name'), max_length=150)
|
||||
unaccent_name = models.CharField(_('Street name ascii char'), max_length=150, null=True)
|
||||
zipcode = models.CharField(_('Postal code'), max_length=5)
|
||||
zipcode = models.CharField(_('Postal code'), max_length=5, db_index=True)
|
||||
type = models.CharField(_('Street type'), max_length=30)
|
||||
citycode = models.CharField(_('City Code'), max_length=5)
|
||||
citycode = models.CharField(_('City Code'), max_length=5, db_index=True)
|
||||
last_update = models.DateTimeField(_('Last update'), null=True, auto_now=True)
|
||||
|
||||
resource = models.ForeignKey(BaseAdresse, on_delete=models.CASCADE, verbose_name=_('BAN Connector'))
|
||||
|
||||
class Meta:
|
||||
ordering = ['unaccent_name', 'name']
|
||||
indexes = [
|
||||
postgresql_indexes.GinIndex(
|
||||
postgresql_indexes.OpClass(Upper('unaccent_name'), 'gin_trgm_ops'),
|
||||
name='%(app_label)s_street_name_idx',
|
||||
),
|
||||
]
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
@ -718,6 +726,9 @@ class RegionModel(UnaccentNameMixin, models.Model):
|
|||
class Meta:
|
||||
ordering = ['code']
|
||||
unique_together = ('resource', 'code')
|
||||
indexes = [
|
||||
models.Index(Upper('unaccent_name'), name='%(app_label)s_region_name_idx'),
|
||||
]
|
||||
|
||||
def __str__(self):
|
||||
return '%s %s' % (self.code, self.name)
|
||||
|
@ -746,6 +757,9 @@ class DepartmentModel(UnaccentNameMixin, models.Model):
|
|||
class Meta:
|
||||
ordering = ['code']
|
||||
unique_together = ('resource', 'code')
|
||||
indexes = [
|
||||
models.Index(Upper('unaccent_name'), name='%(app_label)s_dept_name_idx'),
|
||||
]
|
||||
|
||||
def __str__(self):
|
||||
return '%s %s' % (self.code, self.name)
|
||||
|
@ -755,8 +769,8 @@ class CityModel(UnaccentNameMixin, models.Model):
|
|||
|
||||
name = models.CharField(_('City name'), max_length=150)
|
||||
unaccent_name = models.CharField(_('City name ascii char'), max_length=150, null=True)
|
||||
code = models.CharField(_('INSEE code'), max_length=5)
|
||||
zipcode = models.CharField(_('Postal code'), max_length=5)
|
||||
code = models.CharField(_('INSEE code'), max_length=5, db_index=True)
|
||||
zipcode = models.CharField(_('Postal code'), max_length=5, db_index=True)
|
||||
population = models.PositiveIntegerField(_('Population'))
|
||||
department = models.ForeignKey(DepartmentModel, on_delete=models.CASCADE, blank=True, null=True)
|
||||
region = models.ForeignKey(RegionModel, on_delete=models.CASCADE, blank=True, null=True)
|
||||
|
@ -782,6 +796,9 @@ class CityModel(UnaccentNameMixin, models.Model):
|
|||
class Meta:
|
||||
ordering = ['-population', 'zipcode', 'unaccent_name', 'name']
|
||||
unique_together = ('resource', 'code', 'zipcode')
|
||||
indexes = [
|
||||
models.Index(Upper('unaccent_name'), name='%(app_label)s_city_name_idx'),
|
||||
]
|
||||
|
||||
def __str__(self):
|
||||
return '%s %s' % (self.zipcode, self.name)
|
||||
|
|
Loading…
Reference in New Issue