create indexes

This commit is contained in:
smilerz 2021-05-30 08:57:09 -05:00
parent 8c1cccb7a2
commit a956868eaf
2 changed files with 44 additions and 3 deletions

View File

@ -6,7 +6,7 @@ from django.db import migrations
from django_scopes import scopes_disabled from django_scopes import scopes_disabled
from django.utils import translation from django.utils import translation
from cookbook.managers import DICTIONARY from cookbook.managers import DICTIONARY
from cookbook.models import Recipe, Step from cookbook.models import Recipe, Step, Index
@ -52,6 +52,34 @@ class Migration(migrations.Migration):
model_name='step', model_name='step',
index=GinIndex(fields=['search_vector'], name='cookbook_st_search__2ef7fa_gin'), index=GinIndex(fields=['search_vector'], name='cookbook_st_search__2ef7fa_gin'),
), ),
migrations.AddIndex(
model_name='cooklog',
index=Index(fields=['id', 'recipe', '-created_at', 'rating'], name='cookbook_co_id_37485a_idx'),
),
migrations.AddIndex(
model_name='food',
index=Index(fields=['id', 'name'], name='cookbook_fo_id_22b733_idx'),
),
migrations.AddIndex(
model_name='ingredient',
index=Index(fields=['id', 'food', 'unit'], name='cookbook_in_id_3368be_idx'),
),
migrations.AddIndex(
model_name='keyword',
index=Index(fields=['id', 'name'], name='cookbook_ke_id_ebc03f_idx'),
),
migrations.AddIndex(
model_name='recipe',
index=Index(fields=['id', 'name', 'description'], name='cookbook_re_id_e4c2d4_idx'),
),
migrations.AddIndex(
model_name='recipebook',
index=Index(fields=['name', 'description'], name='cookbook_re_name_bbe446_idx'),
),
migrations.AddIndex(
model_name='viewlog',
index=Index(fields=['recipe', '-created_at'], name='cookbook_vi_recipe__5cd178_idx'),
),
migrations.RunPython( migrations.RunPython(
set_default_search_vector set_default_search_vector
), ),

View File

@ -10,6 +10,7 @@ from django.contrib.postgres.indexes import GinIndex
from django.contrib.postgres.search import SearchVectorField from django.contrib.postgres.search import SearchVectorField
from django.core.validators import MinLengthValidator from django.core.validators import MinLengthValidator
from django.db import models from django.db import models
from django.db.models import Index
from django.utils import timezone from django.utils import timezone
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
from django_prometheus.models import ExportModelOperationsMixin from django_prometheus.models import ExportModelOperationsMixin
@ -271,6 +272,7 @@ class Keyword(ExportModelOperationsMixin('keyword'), models.Model, PermissionMod
class Meta: class Meta:
unique_together = (('space', 'name'),) unique_together = (('space', 'name'),)
indexes = (Index(fields=['id', 'name']), )
class Unit(ExportModelOperationsMixin('unit'), models.Model, PermissionModelMixin): class Unit(ExportModelOperationsMixin('unit'), models.Model, PermissionModelMixin):
@ -302,6 +304,7 @@ class Food(ExportModelOperationsMixin('food'), models.Model, PermissionModelMixi
class Meta: class Meta:
unique_together = (('space', 'name'),) unique_together = (('space', 'name'),)
indexes = (Index(fields=['id', 'name']), )
class Ingredient(ExportModelOperationsMixin('ingredient'), models.Model, PermissionModelMixin): class Ingredient(ExportModelOperationsMixin('ingredient'), models.Model, PermissionModelMixin):
@ -327,6 +330,7 @@ class Ingredient(ExportModelOperationsMixin('ingredient'), models.Model, Permiss
class Meta: class Meta:
ordering = ['order', 'pk'] ordering = ['order', 'pk']
indexes = (Index(fields=['id', 'food', 'unit']), )
class Step(ExportModelOperationsMixin('step'), models.Model, PermissionModelMixin): class Step(ExportModelOperationsMixin('step'), models.Model, PermissionModelMixin):
@ -361,7 +365,7 @@ class Step(ExportModelOperationsMixin('step'), models.Model, PermissionModelMixi
class Meta: class Meta:
ordering = ['order', 'pk'] ordering = ['order', 'pk']
indexes = (GinIndex(fields=["search_vector"]),) indexes = (GinIndex(fields=["search_vector"]), )
class NutritionInformation(models.Model, PermissionModelMixin): class NutritionInformation(models.Model, PermissionModelMixin):
@ -427,7 +431,7 @@ class Recipe(models.Model, PermissionModelMixin):
return self.name return self.name
class Meta(): class Meta():
indexes = (GinIndex(fields=["name_search_vector", "desc_search_vector"]),) indexes = (GinIndex(fields=["name_search_vector", "desc_search_vector"]), Index(fields=['id', 'name', 'description']), )
class Comment(ExportModelOperationsMixin('comment'), models.Model, PermissionModelMixin): class Comment(ExportModelOperationsMixin('comment'), models.Model, PermissionModelMixin):
@ -477,6 +481,9 @@ class RecipeBook(ExportModelOperationsMixin('book'), models.Model, PermissionMod
def __str__(self): def __str__(self):
return self.name return self.name
class Meta():
indexes = (Index(fields=['name', 'description']), )
class RecipeBookEntry(ExportModelOperationsMixin('book_entry'), models.Model, PermissionModelMixin): class RecipeBookEntry(ExportModelOperationsMixin('book_entry'), models.Model, PermissionModelMixin):
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE) recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
@ -672,6 +679,9 @@ class CookLog(ExportModelOperationsMixin('cook_log'), models.Model, PermissionMo
def __str__(self): def __str__(self):
return self.recipe.name return self.recipe.name
class Meta():
indexes = (Index(fields=['id', 'recipe', '-created_at', 'rating']), )
class ViewLog(ExportModelOperationsMixin('view_log'), models.Model, PermissionModelMixin): class ViewLog(ExportModelOperationsMixin('view_log'), models.Model, PermissionModelMixin):
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE) recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
@ -684,6 +694,9 @@ class ViewLog(ExportModelOperationsMixin('view_log'), models.Model, PermissionMo
def __str__(self): def __str__(self):
return self.recipe.name return self.recipe.name
class Meta():
indexes = (Index(fields=['recipe', '-created_at']), )
class ImportLog(models.Model, PermissionModelMixin): class ImportLog(models.Model, PermissionModelMixin):
type = models.CharField(max_length=32) type = models.CharField(max_length=32)