{"nodes": [{"id": "backend_app_api_ingredients_py", "label": "ingredients.py", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L1"}, {"id": "ingredients_list_ingredients", "label": "list_ingredients()", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L33"}, {"id": "ingredients_get_ingredient", "label": "get_ingredient()", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L51"}, {"id": "ingredients_create_ingredient", "label": "create_ingredient()", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L59"}, {"id": "ingredients_update_ingredient", "label": "update_ingredient()", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L79"}, {"id": "ingredients_delete_ingredient", "label": "delete_ingredient()", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L108"}, {"id": "ingredients_pinmatchbody", "label": "_PinMatchBody", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L117"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "ingredients_pin_match", "label": "pin_match()", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L127"}, {"id": "ingredients_unpin_match", "label": "unpin_match()", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L170"}], "edges": [{"source": "backend_app_api_ingredients_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L3", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L4", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "uuid", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L5", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L7", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L8", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L9", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "sqlalchemy_exc", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L10", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L11", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "app_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L13", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "app_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L14", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "app_schemas_ingredient", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L15", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "app_security", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L21", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "ingredients_list_ingredients", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L33", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "ingredients_get_ingredient", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L51", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "ingredients_create_ingredient", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L59", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "ingredients_update_ingredient", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L79", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "ingredients_delete_ingredient", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L108", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "ingredients_pinmatchbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L117", "weight": 1.0}, {"source": "ingredients_pinmatchbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L117", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "ingredients_pin_match", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L127", "weight": 1.0}, {"source": "backend_app_api_ingredients_py", "target": "ingredients_unpin_match", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L170", "weight": 1.0}], "raw_calls": [{"caller_nid": "ingredients_list_ingredients", "callee": "query", "source_file": "backend/app/api/ingredients.py", "source_location": "L38"}, {"caller_nid": "ingredients_list_ingredients", "callee": "lower", "source_file": "backend/app/api/ingredients.py", "source_location": "L40"}, {"caller_nid": "ingredients_list_ingredients", "callee": "filter", "source_file": "backend/app/api/ingredients.py", "source_location": "L41"}, {"caller_nid": "ingredients_list_ingredients", "callee": "or_", "source_file": "backend/app/api/ingredients.py", "source_location": "L42"}, {"caller_nid": "ingredients_list_ingredients", "callee": "ilike", "source_file": "backend/app/api/ingredients.py", "source_location": "L43"}, {"caller_nid": "ingredients_list_ingredients", "callee": "any", "source_file": "backend/app/api/ingredients.py", "source_location": "L44"}, {"caller_nid": "ingredients_list_ingredients", "callee": "all", "source_file": "backend/app/api/ingredients.py", "source_location": "L47"}, {"caller_nid": "ingredients_list_ingredients", "callee": "limit", "source_file": "backend/app/api/ingredients.py", "source_location": "L47"}, {"caller_nid": "ingredients_list_ingredients", "callee": "order_by", "source_file": "backend/app/api/ingredients.py", "source_location": "L47"}, {"caller_nid": "ingredients_get_ingredient", "callee": "first", "source_file": "backend/app/api/ingredients.py", "source_location": "L52"}, {"caller_nid": "ingredients_get_ingredient", "callee": "filter", "source_file": "backend/app/api/ingredients.py", "source_location": "L52"}, {"caller_nid": "ingredients_get_ingredient", "callee": "query", "source_file": "backend/app/api/ingredients.py", "source_location": "L52"}, {"caller_nid": "ingredients_get_ingredient", "callee": "HTTPException", "source_file": "backend/app/api/ingredients.py", "source_location": "L54"}, {"caller_nid": "ingredients_create_ingredient", "callee": "Ingredient", "source_file": "backend/app/api/ingredients.py", "source_location": "L60"}, {"caller_nid": "ingredients_create_ingredient", "callee": "lower", "source_file": "backend/app/api/ingredients.py", "source_location": "L62"}, {"caller_nid": "ingredients_create_ingredient", "callee": "add", "source_file": "backend/app/api/ingredients.py", "source_location": "L68"}, {"caller_nid": "ingredients_create_ingredient", "callee": "commit", "source_file": "backend/app/api/ingredients.py", "source_location": "L70"}, {"caller_nid": "ingredients_create_ingredient", "callee": "rollback", "source_file": "backend/app/api/ingredients.py", "source_location": "L72"}, {"caller_nid": "ingredients_create_ingredient", "callee": "HTTPException", "source_file": "backend/app/api/ingredients.py", "source_location": "L73"}, {"caller_nid": "ingredients_create_ingredient", "callee": "refresh", "source_file": "backend/app/api/ingredients.py", "source_location": "L74"}, {"caller_nid": "ingredients_update_ingredient", "callee": "first", "source_file": "backend/app/api/ingredients.py", "source_location": "L84"}, {"caller_nid": "ingredients_update_ingredient", "callee": "filter", "source_file": "backend/app/api/ingredients.py", "source_location": "L84"}, {"caller_nid": "ingredients_update_ingredient", "callee": "query", "source_file": "backend/app/api/ingredients.py", "source_location": "L84"}, {"caller_nid": "ingredients_update_ingredient", "callee": "HTTPException", "source_file": "backend/app/api/ingredients.py", "source_location": "L86"}, {"caller_nid": "ingredients_update_ingredient", "callee": "model_dump", "source_file": "backend/app/api/ingredients.py", "source_location": "L87"}, {"caller_nid": "ingredients_update_ingredient", "callee": "lower", "source_file": "backend/app/api/ingredients.py", "source_location": "L90"}, {"caller_nid": "ingredients_update_ingredient", "callee": "setattr", "source_file": "backend/app/api/ingredients.py", "source_location": "L93"}, {"caller_nid": "ingredients_update_ingredient", "callee": "commit", "source_file": "backend/app/api/ingredients.py", "source_location": "L95"}, {"caller_nid": "ingredients_update_ingredient", "callee": "rollback", "source_file": "backend/app/api/ingredients.py", "source_location": "L97"}, {"caller_nid": "ingredients_update_ingredient", "callee": "HTTPException", "source_file": "backend/app/api/ingredients.py", "source_location": "L98"}, {"caller_nid": "ingredients_update_ingredient", "callee": "refresh", "source_file": "backend/app/api/ingredients.py", "source_location": "L99"}, {"caller_nid": "ingredients_delete_ingredient", "callee": "first", "source_file": "backend/app/api/ingredients.py", "source_location": "L109"}, {"caller_nid": "ingredients_delete_ingredient", "callee": "filter", "source_file": "backend/app/api/ingredients.py", "source_location": "L109"}, {"caller_nid": "ingredients_delete_ingredient", "callee": "query", "source_file": "backend/app/api/ingredients.py", "source_location": "L109"}, {"caller_nid": "ingredients_delete_ingredient", "callee": "HTTPException", "source_file": "backend/app/api/ingredients.py", "source_location": "L111"}, {"caller_nid": "ingredients_delete_ingredient", "callee": "delete", "source_file": "backend/app/api/ingredients.py", "source_location": "L112"}, {"caller_nid": "ingredients_delete_ingredient", "callee": "commit", "source_file": "backend/app/api/ingredients.py", "source_location": "L113"}, {"caller_nid": "ingredients_delete_ingredient", "callee": "Response", "source_file": "backend/app/api/ingredients.py", "source_location": "L114"}, {"caller_nid": "ingredients_pin_match", "callee": "first", "source_file": "backend/app/api/ingredients.py", "source_location": "L133"}, {"caller_nid": "ingredients_pin_match", "callee": "filter", "source_file": "backend/app/api/ingredients.py", "source_location": "L133"}, {"caller_nid": "ingredients_pin_match", "callee": "query", "source_file": "backend/app/api/ingredients.py", "source_location": "L133"}, {"caller_nid": "ingredients_pin_match", "callee": "Decimal", "source_file": "backend/app/api/ingredients.py", "source_location": "L142"}, {"caller_nid": "ingredients_pin_match", "callee": "str", "source_file": "backend/app/api/ingredients.py", "source_location": "L142"}, {"caller_nid": "ingredients_pin_match", "callee": "round", "source_file": "backend/app/api/ingredients.py", "source_location": "L142"}, {"caller_nid": "ingredients_pin_match", "callee": "commit", "source_file": "backend/app/api/ingredients.py", "source_location": "L143"}, {"caller_nid": "ingredients_pin_match", "callee": "refresh", "source_file": "backend/app/api/ingredients.py", "source_location": "L144"}, {"caller_nid": "ingredients_pin_match", "callee": "IngredientGroceryMatch", "source_file": "backend/app/api/ingredients.py", "source_location": "L146"}, {"caller_nid": "ingredients_pin_match", "callee": "Decimal", "source_file": "backend/app/api/ingredients.py", "source_location": "L149"}, {"caller_nid": "ingredients_pin_match", "callee": "str", "source_file": "backend/app/api/ingredients.py", "source_location": "L149"}, {"caller_nid": "ingredients_pin_match", "callee": "round", "source_file": "backend/app/api/ingredients.py", "source_location": "L149"}, {"caller_nid": "ingredients_pin_match", "callee": "add", "source_file": "backend/app/api/ingredients.py", "source_location": "L152"}, {"caller_nid": "ingredients_pin_match", "callee": "commit", "source_file": "backend/app/api/ingredients.py", "source_location": "L153"}, {"caller_nid": "ingredients_pin_match", "callee": "refresh", "source_file": "backend/app/api/ingredients.py", "source_location": "L154"}, {"caller_nid": "ingredients_unpin_match", "callee": "first", "source_file": "backend/app/api/ingredients.py", "source_location": "L171"}, {"caller_nid": "ingredients_unpin_match", "callee": "filter", "source_file": "backend/app/api/ingredients.py", "source_location": "L171"}, {"caller_nid": "ingredients_unpin_match", "callee": "query", "source_file": "backend/app/api/ingredients.py", "source_location": "L171"}, {"caller_nid": "ingredients_unpin_match", "callee": "HTTPException", "source_file": "backend/app/api/ingredients.py", "source_location": "L173"}, {"caller_nid": "ingredients_unpin_match", "callee": "delete", "source_file": "backend/app/api/ingredients.py", "source_location": "L174"}, {"caller_nid": "ingredients_unpin_match", "callee": "commit", "source_file": "backend/app/api/ingredients.py", "source_location": "L175"}, {"caller_nid": "ingredients_unpin_match", "callee": "Response", "source_file": "backend/app/api/ingredients.py", "source_location": "L176"}]}