Coverage for opt/mealie/lib/python3.12/site-packages/mealie/alembic/versions/2024-10-23-15.50.59_b1020f328e98_add_recipe_yield_quantity.py: 74%

40 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-11-25 17:29 +0000

1"""add recipe yield quantity 

2 

3Revision ID: b1020f328e98 

4Revises: 3897397b4631 

5Create Date: 2024-10-23 15:50:59.888793 

6 

7""" 

8 

9import sqlalchemy as sa 1a

10from alembic import op 1a

11from sqlalchemy import orm 1a

12 

13from mealie.db.models._model_utils.guid import GUID 1a

14from mealie.services.scraper.cleaner import clean_yield 1a

15 

16# revision identifiers, used by Alembic. 

17revision = "b1020f328e98" 1a

18down_revision: str | None = "3897397b4631" 1a

19branch_labels: str | tuple[str, ...] | None = None 1a

20depends_on: str | tuple[str, ...] | None = None 1a

21 

22 

23# Intermediate table definitions 

24class SqlAlchemyBase(orm.DeclarativeBase): 1a

25 pass 1a

26 

27 

28class RecipeModel(SqlAlchemyBase): 1a

29 __tablename__ = "recipes" 1a

30 

31 id: orm.Mapped[GUID] = orm.mapped_column(GUID, primary_key=True, default=GUID.generate) 1a

32 recipe_yield: orm.Mapped[str | None] = orm.mapped_column(sa.String) 1a

33 recipe_yield_quantity: orm.Mapped[float] = orm.mapped_column(sa.Float, index=True, default=0) 1a

34 recipe_servings: orm.Mapped[float] = orm.mapped_column(sa.Float, index=True, default=0) 1a

35 

36 

37def parse_recipe_yields(): 1a

38 bind = op.get_bind() 1a

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

40 

41 for recipe in session.query(RecipeModel).all(): 41 ↛ 42line 41 didn't jump to line 42 because the loop on line 41 never started1a

42 try: 

43 recipe.recipe_servings, recipe.recipe_yield_quantity, recipe.recipe_yield = clean_yield(recipe.recipe_yield) 

44 except Exception: 

45 recipe.recipe_servings = 0 

46 recipe.recipe_yield_quantity = 0 

47 

48 session.commit() 1a

49 

50 

51def upgrade(): 1a

52 # ### commands auto generated by Alembic - please adjust! ### 

53 with op.batch_alter_table("recipes", schema=None) as batch_op: 1a

54 batch_op.add_column(sa.Column("recipe_yield_quantity", sa.Float(), nullable=False, server_default="0")) 1a

55 batch_op.create_index(batch_op.f("ix_recipes_recipe_yield_quantity"), ["recipe_yield_quantity"], unique=False) 1a

56 batch_op.add_column(sa.Column("recipe_servings", sa.Float(), nullable=False, server_default="0")) 1a

57 batch_op.create_index(batch_op.f("ix_recipes_recipe_servings"), ["recipe_servings"], unique=False) 1a

58 

59 # ### end Alembic commands ### 

60 

61 parse_recipe_yields() 1a

62 

63 

64def downgrade(): 1a

65 # ### commands auto generated by Alembic - please adjust! ### 

66 with op.batch_alter_table("recipes", schema=None) as batch_op: 

67 batch_op.drop_index(batch_op.f("ix_recipes_recipe_servings")) 

68 batch_op.drop_column("recipe_servings") 

69 batch_op.drop_index(batch_op.f("ix_recipes_recipe_yield_quantity")) 

70 batch_op.drop_column("recipe_yield_quantity") 

71 

72 # ### end Alembic commands ###