Coverage for opt/mealie/lib/python3.12/site-packages/mealie/alembic/versions/2023-09-01-14.55.42_0341b154f79a_added_normalized_unit_and_food_names.py: 57%
37 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-12-05 14:03 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-12-05 14:03 +0000
1"""added normalized unit and food names
3Revision ID: 0341b154f79a
4Revises: bcfdad6b7355
5Create Date: 2023-09-01 14:55:42.166766
7"""
9import sqlalchemy as sa 1a
10from sqlalchemy import orm, select 1a
12from alembic import op 1a
13from mealie.db.models.recipe.ingredient import IngredientFoodModel, IngredientUnitModel 1a
15# revision identifiers, used by Alembic.
16revision = "0341b154f79a" 1a
17down_revision = "bcfdad6b7355" 1a
18branch_labels: str | tuple[str, ...] | None = None 1a
19depends_on: str | tuple[str, ...] | None = None 1a
22def populate_normalized_fields(): 1a
23 bind = op.get_bind() 1a
24 session = orm.Session(bind=bind) 1a
26 units = ( 1a
27 session.execute(
28 select(IngredientUnitModel).options(
29 orm.load_only(IngredientUnitModel.name, IngredientUnitModel.abbreviation)
30 )
31 )
32 .scalars()
33 .all()
34 )
35 for unit in units: 35 ↛ 36line 35 didn't jump to line 36 because the loop on line 35 never started1a
36 if unit.name is not None:
37 session.execute(
38 sa.text(
39 f"UPDATE {IngredientUnitModel.__tablename__} SET name_normalized=:name_normalized WHERE id=:id"
40 ).bindparams(name_normalized=IngredientUnitModel.normalize(unit.name), id=unit.id)
41 )
43 if unit.abbreviation is not None:
44 session.execute(
45 sa.text(
46 f"UPDATE {IngredientUnitModel.__tablename__} SET abbreviation_normalized=:abbreviation_normalized WHERE id=:id"
47 ).bindparams(abbreviation_normalized=IngredientUnitModel.normalize(unit.abbreviation), id=unit.id)
48 )
50 foods = ( 1a
51 session.execute(select(IngredientFoodModel).options(orm.load_only(IngredientFoodModel.name))).scalars().all()
52 )
53 for food in foods: 53 ↛ 54line 53 didn't jump to line 54 because the loop on line 53 never started1a
54 if food.name is not None:
55 session.execute(
56 sa.text(
57 f"UPDATE {IngredientFoodModel.__tablename__} SET name_normalized=:name_normalized WHERE id=:id"
58 ).bindparams(name_normalized=IngredientFoodModel.normalize(food.name), id=food.id)
59 )
61 session.commit() 1a
64def upgrade(): 1a
65 # ### commands auto generated by Alembic - please adjust! ###
66 op.add_column("ingredient_foods", sa.Column("name_normalized", sa.String(), nullable=True)) 1a
67 op.create_index(op.f("ix_ingredient_foods_name_normalized"), "ingredient_foods", ["name_normalized"], unique=False) 1a
68 op.add_column("ingredient_units", sa.Column("name_normalized", sa.String(), nullable=True)) 1a
69 op.add_column("ingredient_units", sa.Column("abbreviation_normalized", sa.String(), nullable=True)) 1a
70 op.create_index( 1a
71 op.f("ix_ingredient_units_abbreviation_normalized"),
72 "ingredient_units",
73 ["abbreviation_normalized"],
74 unique=False,
75 )
76 op.create_index(op.f("ix_ingredient_units_name_normalized"), "ingredient_units", ["name_normalized"], unique=False) 1a
77 # ### end Alembic commands ###
79 populate_normalized_fields() 1a
82def downgrade(): 1a
83 # ### commands auto generated by Alembic - please adjust! ###
84 op.drop_index(op.f("ix_ingredient_units_name_normalized"), table_name="ingredient_units")
85 op.drop_index(op.f("ix_ingredient_units_abbreviation_normalized"), table_name="ingredient_units")
86 op.drop_column("ingredient_units", "abbreviation_normalized")
87 op.drop_column("ingredient_units", "name_normalized")
88 op.drop_index(op.f("ix_ingredient_foods_name_normalized"), table_name="ingredient_foods")
89 op.drop_column("ingredient_foods", "name_normalized")
90 # ### end Alembic commands ###