Fix new services implementation 2
This commit is contained in:
@@ -26,17 +26,53 @@ class IngredientRepository(BaseRepository[Ingredient, IngredientCreate, Ingredie
|
||||
async def create_ingredient(self, ingredient_data: IngredientCreate, tenant_id: UUID) -> Ingredient:
|
||||
"""Create a new ingredient"""
|
||||
try:
|
||||
# Prepare data
|
||||
# Prepare data and map schema fields to model fields
|
||||
create_data = ingredient_data.model_dump()
|
||||
create_data['tenant_id'] = tenant_id
|
||||
|
||||
# Map 'category' from schema to appropriate model fields
|
||||
if 'category' in create_data:
|
||||
category_value = create_data.pop('category')
|
||||
# For now, assume all items are ingredients and map to ingredient_category
|
||||
# Convert string to enum object
|
||||
from app.models.inventory import IngredientCategory
|
||||
try:
|
||||
# Find the enum member by value
|
||||
for enum_member in IngredientCategory:
|
||||
if enum_member.value == category_value:
|
||||
create_data['ingredient_category'] = enum_member
|
||||
break
|
||||
else:
|
||||
# If not found, default to OTHER
|
||||
create_data['ingredient_category'] = IngredientCategory.OTHER
|
||||
except Exception:
|
||||
# Fallback to OTHER if any issues
|
||||
create_data['ingredient_category'] = IngredientCategory.OTHER
|
||||
|
||||
# Convert unit_of_measure string to enum object
|
||||
if 'unit_of_measure' in create_data:
|
||||
unit_value = create_data['unit_of_measure']
|
||||
from app.models.inventory import UnitOfMeasure
|
||||
try:
|
||||
# Find the enum member by value
|
||||
for enum_member in UnitOfMeasure:
|
||||
if enum_member.value == unit_value:
|
||||
create_data['unit_of_measure'] = enum_member
|
||||
break
|
||||
else:
|
||||
# If not found, default to UNITS
|
||||
create_data['unit_of_measure'] = UnitOfMeasure.UNITS
|
||||
except Exception:
|
||||
# Fallback to UNITS if any issues
|
||||
create_data['unit_of_measure'] = UnitOfMeasure.UNITS
|
||||
|
||||
# Create record
|
||||
record = await self.create(create_data)
|
||||
logger.info(
|
||||
"Created ingredient",
|
||||
ingredient_id=record.id,
|
||||
name=record.name,
|
||||
category=record.category.value if record.category else None,
|
||||
ingredient_category=record.ingredient_category.value if record.ingredient_category else None,
|
||||
tenant_id=tenant_id
|
||||
)
|
||||
return record
|
||||
|
||||
Reference in New Issue
Block a user