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.15.2, created at 2026-10-07 03:04 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
1"""add recipe yield quantity
3Revision ID: b1020f328e98
4Revises: 3897397b4631
5Create Date: 2024-10-23 15:50:59.888793
7"""
9import sqlalchemy as sa
10from alembic import op
11from sqlalchemy import orm
13from mealie.db.models._model_utils.guid import GUID
14from mealie.services.scraper.cleaner import clean_yield
16# revision identifiers, used by Alembic.
17revision = "b1020f328e98"
18down_revision: str | None = "3897397b4631"
19branch_labels: str | tuple[str, ...] | None = None
20depends_on: str | tuple[str, ...] | None = None
23# Intermediate table definitions
24class SqlAlchemyBase(orm.DeclarativeBase):
25 pass
28class RecipeModel(SqlAlchemyBase):
29 __tablename__ = "recipes"
31 id: orm.Mapped[GUID] = orm.mapped_column(GUID, primary_key=True, default=GUID.generate)
32 recipe_yield: orm.Mapped[str | None] = orm.mapped_column(sa.String)
33 recipe_yield_quantity: orm.Mapped[float] = orm.mapped_column(sa.Float, index=True, default=0)
34 recipe_servings: orm.Mapped[float] = orm.mapped_column(sa.Float, index=True, default=0)
37def parse_recipe_yields():
38 bind = op.get_bind()
39 session = orm.Session(bind=bind)
41 for recipe in session.query(RecipeModel).all(): 41 ↛ 42line 41 didn't jump to line 42 because the loop on line 41 never started
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
48 session.commit()
51def upgrade():
52 # ### commands auto generated by Alembic - please adjust! ###
53 with op.batch_alter_table("recipes", schema=None) as batch_op:
54 batch_op.add_column(sa.Column("recipe_yield_quantity", sa.Float(), nullable=False, server_default="0"))
55 batch_op.create_index(batch_op.f("ix_recipes_recipe_yield_quantity"), ["recipe_yield_quantity"], unique=False)
56 batch_op.add_column(sa.Column("recipe_servings", sa.Float(), nullable=False, server_default="0"))
57 batch_op.create_index(batch_op.f("ix_recipes_recipe_servings"), ["recipe_servings"], unique=False)
59 # ### end Alembic commands ###
61 parse_recipe_yields()
64def downgrade():
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")
72 # ### end Alembic commands ###