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

1"""added normalized unit and food names 

2 

3Revision ID: 0341b154f79a 

4Revises: bcfdad6b7355 

5Create Date: 2023-09-01 14:55:42.166766 

6 

7""" 

8 

9import sqlalchemy as sa 1a

10from sqlalchemy import orm, select 1a

11 

12from alembic import op 1a

13from mealie.db.models.recipe.ingredient import IngredientFoodModel, IngredientUnitModel 1a

14 

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

20 

21 

22def populate_normalized_fields(): 1a

23 bind = op.get_bind() 1a

24 session = orm.Session(bind=bind) 1a

25 

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 ) 

42 

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 ) 

49 

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 ) 

60 

61 session.commit() 1a

62 

63 

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 ### 

78 

79 populate_normalized_fields() 1a

80 

81 

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 ###