Skip to content

Commit

Permalink
fix(populate): Better TypeError handling on AutoMapper::map before in…
Browse files Browse the repository at this point in the history
…dexing
  • Loading branch information
welcoMattic committed Oct 21, 2024
1 parent 9122b37 commit 2e80b81
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
1 change: 1 addition & 0 deletions .php-cs-fixer.cache
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"php":"8.3.12","version":"3.64.0:v3.64.0#58dd9c931c785a79739310aef5178928305ffa67","indent":" ","lineEnding":"\n","rules":{"doctrine_annotation_array_assignment":{"operator":"="},"doctrine_annotation_braces":true,"doctrine_annotation_indentation":true,"doctrine_annotation_spaces":{"after_array_assignments_equals":false,"before_array_assignments_equals":false},"list_syntax":{"syntax":"short"},"visibility_required":{"elements":["const","property","method"]},"ternary_to_null_coalescing":true,"array_syntax":{"syntax":"short"},"void_return":true,"combine_nested_dirname":true,"declare_strict_types":true,"non_printable_character":true,"random_api_migration":{"replacements":{"mt_rand":"random_int","rand":"random_int"}},"pow_to_exponentiation":true,"php_unit_namespaced":{"target":"6.0"},"php_unit_dedicate_assert":true,"php_unit_expectation":{"target":"5.6"},"php_unit_mock":{"target":"5.5"},"php_unit_no_expectation_annotation":{"target":"4.3"},"align_multiline_comment":{"comment_type":"phpdocs_like"},"backtick_to_shell_exec":true,"binary_operator_spaces":true,"blank_line_before_statement":true,"braces_position":{"allow_single_line_anonymous_functions":true,"allow_single_line_empty_anonymous_classes":true},"class_attributes_separation":true,"class_definition":{"single_item_single_line":true,"multi_line_extends_each_single_line":true},"class_reference_name_casing":true,"clean_namespace":true,"concat_space":{"spacing":"one"},"declare_parentheses":true,"echo_tag_syntax":true,"empty_loop_body":{"style":"braces"},"empty_loop_condition":true,"fully_qualified_strict_types":true,"function_declaration":true,"general_phpdoc_tag_rename":true,"global_namespace_import":{"import_classes":true,"import_constants":false,"import_functions":false},"include":true,"increment_style":{"style":"pre"},"integer_literal_case":true,"lambda_not_used_import":true,"linebreak_after_opening_tag":true,"magic_constant_casing":true,"magic_method_casing":true,"method_argument_space":true,"native_function_casing":true,"native_type_declaration_casing":true,"no_alias_language_construct_call":true,"no_alternative_syntax":true,"no_binary_string":true,"no_blank_lines_after_phpdoc":true,"no_empty_comment":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["break","case","continue","curly_brace_block","default","extra","parenthesis_brace_block","return","square_brace_block","switch","throw","use"]},"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_null_property_initialization":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_around_offset":true,"no_superfluous_phpdoc_tags":{"allow_mixed":true},"no_trailing_comma_in_singleline":true,"no_unneeded_braces":true,"no_unneeded_control_parentheses":true,"no_unneeded_import_alias":true,"no_unset_cast":true,"no_unused_imports":true,"no_useless_concat_operator":true,"no_useless_nullsafe_operator":true,"no_whitespace_before_comma_in_array":true,"normalize_index_brace":true,"nullable_type_declaration":true,"object_operator_without_whitespace":true,"operator_linebreak":{"only_booleans":true},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"alpha"},"ordered_types":{"null_adjustment":"always_last","sort_algorithm":"none"},"php_unit_fqcn_annotation":true,"php_unit_method_casing":{"case":"camel_case"},"phpdoc_align":{"align":"left"},"phpdoc_annotation_without_dot":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_alias_tag":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_return_self_reference":true,"phpdoc_scalar":true,"phpdoc_separation":{"groups":[["ORM\\*"],["Assert\\*"]]},"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_tag_type":true,"phpdoc_trim":true,"phpdoc_trim_consecutive_blank_line_separation":true,"phpdoc_types":true,"phpdoc_types_order":{"null_adjustment":"always_last","sort_algorithm":"none"},"phpdoc_var_without_name":true,"semicolon_after_instruction":true,"simple_to_complex_string_variable":true,"single_class_element_per_statement":true,"single_import_per_statement":true,"single_line_comment_spacing":true,"single_line_comment_style":true,"single_line_throw":true,"single_quote":true,"single_space_around_construct":true,"space_after_semicolon":true,"standardize_increment":true,"standardize_not_equals":true,"statement_indentation":{"stick_comment_to_next_continuous_control_statement":true},"switch_continue_to_break":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"type_declaration_spaces":true,"types_spaces":true,"unary_operator_spaces":true,"whitespace_after_comma_in_array":true,"yoda_style":true,"array_indentation":true,"cast_spaces":true,"new_with_parentheses":true,"blank_line_after_opening_tag":true,"blank_line_between_import_groups":true,"blank_lines_before_namespace":true,"compact_nullable_type_declaration":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"return_type_declaration":true,"short_scalar_cast":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"blank_line_after_namespace":true,"constant_case":{"case":"lower"},"control_structure_braces":true,"control_structure_continuation_position":true,"elseif":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"no_break_comment":true,"no_closing_tag":true,"no_multiple_statements_per_line":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_line_after_imports":true,"spaces_inside_parentheses":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true,"array_push":true,"dir_constant":true,"ereg_to_preg":true,"error_suppression":true,"fopen_flag_order":true,"fopen_flags":{"b_mode":false},"function_to_constant":true,"get_class_to_class_keyword":true,"implode_call":true,"is_null":true,"logical_operators":true,"long_to_shorthand_operator":true,"modernize_types_casting":true,"native_constant_invocation":true,"native_function_invocation":{"include":["@compiler_optimized"],"scope":"namespaced","strict":true},"no_alias_functions":true,"no_homoglyph_names":true,"no_php4_constructor":true,"no_unneeded_final_method":true,"no_useless_sprintf":true,"ordered_traits":true,"php_unit_construct":true,"php_unit_mock_short_will_return":true,"php_unit_set_up_tear_down_visibility":true,"php_unit_test_annotation":{"style":"prefix"},"psr_autoloading":true,"self_accessor":true,"set_type_to_cast":true,"string_length_to_empty":true,"string_line_ending":true,"ternary_to_elvis_operator":true,"no_trailing_whitespace_in_string":true,"no_unreachable_default_argument_value":true,"combine_consecutive_issets":true,"combine_consecutive_unsets":true,"comment_to_phpdoc":true,"explicit_indirect_variable":true,"header_comment":{"header":"This file is part of Monsieur Biz' Search plugin for Sylius.\n\n(c) Monsieur Biz <[email protected]>\n\nFor the full copyright and license information, please view the LICENSE.txt\nfile that was distributed with this source code.","location":"after_open"},"multiline_comment_opening_closing":true,"multiline_whitespace_before_semicolons":{"strategy":"new_line_for_chained_calls"},"no_superfluous_elseif":true,"no_unset_on_property":true,"no_useless_else":true,"no_useless_return":true,"phpdoc_add_missing_param_annotation":{"only_untyped":true},"phpdoc_no_empty_return":true,"phpdoc_var_annotation_correct_order":true,"protected_to_private":true,"return_assignment":true,"strict_param":true},"hashes":{"\/private\/var\/folders\/ry\/l1cc0rf96yv0c0nwcycpk_0r0000gn\/T\/PHP CS Fixertemp_folder1823\/src\/Index\/Indexer.php":"5593564f762533b3fc99fc56a2a8c214","\/private\/var\/folders\/ry\/l1cc0rf96yv0c0nwcycpk_0r0000gn\/T\/PHP CS Fixertemp_folder610\/src\/Index\/Indexer.php":"3552fc399c372d7df4b55ed1624f5367","\/private\/var\/folders\/ry\/l1cc0rf96yv0c0nwcycpk_0r0000gn\/T\/PHP CS Fixertemp_folder289\/src\/Index\/Indexer.php":"3552fc399c372d7df4b55ed1624f5367"}}
12 changes: 11 additions & 1 deletion src/Index/Indexer.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
use Sylius\Component\Resource\Model\TranslatableInterface;
use Symfony\Component\Console\Output\NullOutput;
use Symfony\Component\Console\Output\OutputInterface;
use TypeError;

final class Indexer implements IndexerInterface
{
Expand Down Expand Up @@ -192,7 +193,16 @@ private function indexDocumentable(OutputInterface $output, DocumentableInterfac
if (null !== $locale && $item instanceof TranslatableInterface) {
$item->setCurrentLocale($locale);
}
$dto = $this->autoMapper->map($item, $documentable->getTargetClass());

try {
$dto = $this->autoMapper->map($item, $documentable->getTargetClass());
} catch (TypeError $e) {
$id = method_exists($item, 'getId') ? $item->getId() : 'unknown';
$output->writeln(\sprintf('Error while mapping %s (id: %s): %s', $item::class, $id, $e->getMessage()));

continue;
}

// @phpstan-ignore-next-line
$indexer->scheduleIndex($newIndex, new Document((string) $dto->getId(), $dto));
}
Expand Down

0 comments on commit 2e80b81

Please sign in to comment.