From d9b7f0a3a1150455795fb8f9bb22291d24a5b1d7 Mon Sep 17 00:00:00 2001 From: Michael Genson Date: Sat, 21 Feb 2026 18:01:32 +0000 Subject: [PATCH] add unit standardization fields --- ...f1826e3_add_unit_standardization_fields.py | 35 +++++++++++++++++++ mealie/db/models/recipe/ingredient.py | 4 +++ 2 files changed, 39 insertions(+) create mode 100644 mealie/alembic/versions/2026-02-21-17.59.01_a39c7f1826e3_add_unit_standardization_fields.py diff --git a/mealie/alembic/versions/2026-02-21-17.59.01_a39c7f1826e3_add_unit_standardization_fields.py b/mealie/alembic/versions/2026-02-21-17.59.01_a39c7f1826e3_add_unit_standardization_fields.py new file mode 100644 index 000000000..9bc93dee9 --- /dev/null +++ b/mealie/alembic/versions/2026-02-21-17.59.01_a39c7f1826e3_add_unit_standardization_fields.py @@ -0,0 +1,35 @@ +"""add unit standardization fields + +Revision ID: a39c7f1826e3 +Revises: 1d9a002d7234 +Create Date: 2026-02-21 17:59:01.161812 + +""" + +import sqlalchemy as sa +from alembic import op + + +# revision identifiers, used by Alembic. +revision = "a39c7f1826e3" +down_revision: str | None = "1d9a002d7234" +branch_labels: str | tuple[str, ...] | None = None +depends_on: str | tuple[str, ...] | None = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("ingredient_units", schema=None) as batch_op: + batch_op.add_column(sa.Column("standard_quantity", sa.Float(), nullable=True)) + batch_op.add_column(sa.Column("standard_unit", sa.String(), nullable=True)) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("ingredient_units", schema=None) as batch_op: + batch_op.drop_column("standard_unit") + batch_op.drop_column("standard_quantity") + + # ### end Alembic commands ### diff --git a/mealie/db/models/recipe/ingredient.py b/mealie/db/models/recipe/ingredient.py index f65830953..82e6f89af 100644 --- a/mealie/db/models/recipe/ingredient.py +++ b/mealie/db/models/recipe/ingredient.py @@ -52,6 +52,10 @@ class IngredientUnitModel(SqlAlchemyBase, BaseMixins): cascade="all, delete, delete-orphan", ) + # Standardization + standard_quantity: Mapped[float | None] = mapped_column(Float) + standard_unit: Mapped[str | None] = mapped_column(String) + # Automatically updated by sqlalchemy event, do not write to this manually name_normalized: Mapped[str | None] = mapped_column(sa.String, index=True) plural_name_normalized: Mapped[str | None] = mapped_column(sa.String, index=True)