Improve FoodItem uniqueness and add name constraint

Refactored add_meal routes to check for existing FoodItems by name or barcode and improved form handling. Made barcode optional in FoodItemForm. Added a unique constraint on (name, owner_id) for FoodItem in both the model and database migrations, while retaining the (barcode, owner_id) constraint. Updated FoodItem relationship to cascade deletes.
This commit is contained in:
2025-08-11 14:32:53 +02:00
parent ad7f787ce5
commit 7fe30bfebf
5 changed files with 134 additions and 46 deletions

View File

@@ -0,0 +1,34 @@
"""empty message
Revision ID: 99f86450e4af
Revises: bb1d9bebf8f6
Create Date: 2025-08-11 12:36:26.924696
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '99f86450e4af'
down_revision = 'bb1d9bebf8f6'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('food_item', schema=None) as batch_op:
batch_op.drop_constraint(batch_op.f('barcode_owner_key'), type_='unique')
batch_op.create_unique_constraint('name_owner_key', ['name', 'owner_id'])
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('food_item', schema=None) as batch_op:
batch_op.drop_constraint('name_owner_key', type_='unique')
batch_op.create_unique_constraint(batch_op.f('barcode_owner_key'), ['barcode', 'owner_id'])
# ### end Alembic commands ###