algolia 2.3.4 → 3.0.0.alpha.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (602) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -93
  3. data/Gemfile +1 -14
  4. data/Gemfile.lock +64 -0
  5. data/README.md +4 -6
  6. data/Rakefile +0 -39
  7. data/algolia.gemspec +24 -39
  8. data/lib/algolia/api/abtesting_client.rb +418 -0
  9. data/lib/algolia/api/analytics_client.rb +1294 -0
  10. data/lib/algolia/api/ingestion_client.rb +1659 -0
  11. data/lib/algolia/api/insights_client.rb +252 -0
  12. data/lib/algolia/api/monitoring_client.rb +555 -0
  13. data/lib/algolia/api/personalization_client.rb +365 -0
  14. data/lib/algolia/api/query_suggestions_client.rb +491 -0
  15. data/lib/algolia/api/recommend_client.rb +460 -0
  16. data/lib/algolia/api/search_client.rb +2723 -0
  17. data/lib/algolia/api_client.rb +153 -0
  18. data/lib/algolia/api_error.rb +48 -0
  19. data/lib/algolia/configuration.rb +41 -0
  20. data/lib/algolia/logger_helper.rb +1 -1
  21. data/lib/algolia/models/abtesting/ab_test.rb +332 -0
  22. data/lib/algolia/models/abtesting/ab_test_response.rb +219 -0
  23. data/lib/algolia/models/abtesting/ab_tests_variant.rb +217 -0
  24. data/lib/algolia/models/abtesting/ab_tests_variant_search_params.rb +236 -0
  25. data/lib/algolia/models/abtesting/add_ab_tests_request.rb +239 -0
  26. data/lib/algolia/models/abtesting/add_ab_tests_variant.rb +96 -0
  27. data/lib/algolia/models/abtesting/currencies_value.rb +223 -0
  28. data/lib/algolia/models/abtesting/custom_search_params.rb +195 -0
  29. data/lib/algolia/models/abtesting/error_base.rb +196 -0
  30. data/lib/algolia/models/abtesting/filter_effects.rb +202 -0
  31. data/lib/algolia/models/abtesting/filter_effects_empty_search.rb +204 -0
  32. data/lib/algolia/models/abtesting/filter_effects_outliers.rb +204 -0
  33. data/lib/algolia/models/abtesting/list_ab_tests_response.rb +221 -0
  34. data/lib/algolia/models/abtesting/variant.rb +399 -0
  35. data/lib/algolia/models/analytics/average_click_event.rb +219 -0
  36. data/lib/algolia/models/analytics/click_position.rb +209 -0
  37. data/lib/algolia/models/analytics/click_through_rate_event.rb +249 -0
  38. data/lib/algolia/models/analytics/conversion_rate_event.rb +249 -0
  39. data/lib/algolia/models/analytics/direction.rb +33 -0
  40. data/lib/algolia/models/analytics/error_base.rb +196 -0
  41. data/lib/algolia/models/analytics/get_average_click_position_response.rb +221 -0
  42. data/lib/algolia/models/analytics/get_click_positions_response.rb +215 -0
  43. data/lib/algolia/models/analytics/get_click_through_rate_response.rb +251 -0
  44. data/lib/algolia/models/analytics/get_conversation_rate_response.rb +251 -0
  45. data/lib/algolia/models/analytics/get_no_click_rate_response.rb +251 -0
  46. data/lib/algolia/models/analytics/get_no_results_rate_response.rb +251 -0
  47. data/lib/algolia/models/analytics/get_searches_count_response.rb +209 -0
  48. data/lib/algolia/models/analytics/get_searches_no_clicks_response.rb +197 -0
  49. data/lib/algolia/models/analytics/get_searches_no_results_response.rb +197 -0
  50. data/lib/algolia/models/analytics/get_status_response.rb +195 -0
  51. data/lib/algolia/models/analytics/get_top_countries_response.rb +197 -0
  52. data/lib/algolia/models/analytics/get_top_filter_attribute.rb +207 -0
  53. data/lib/algolia/models/analytics/get_top_filter_attributes_response.rb +197 -0
  54. data/lib/algolia/models/analytics/get_top_filter_for_attribute.rb +231 -0
  55. data/lib/algolia/models/analytics/get_top_filter_for_attribute_response.rb +197 -0
  56. data/lib/algolia/models/analytics/get_top_filters_no_results_response.rb +197 -0
  57. data/lib/algolia/models/analytics/get_top_filters_no_results_value.rb +219 -0
  58. data/lib/algolia/models/analytics/get_top_filters_no_results_values.rb +209 -0
  59. data/lib/algolia/models/analytics/get_top_hits_response.rb +96 -0
  60. data/lib/algolia/models/analytics/get_top_searches_response.rb +96 -0
  61. data/lib/algolia/models/analytics/get_users_count_response.rb +209 -0
  62. data/lib/algolia/models/analytics/no_click_rate_event.rb +249 -0
  63. data/lib/algolia/models/analytics/no_results_rate_event.rb +249 -0
  64. data/lib/algolia/models/analytics/order_by.rb +35 -0
  65. data/lib/algolia/models/analytics/search_event.rb +207 -0
  66. data/lib/algolia/models/analytics/search_no_click_event.rb +219 -0
  67. data/lib/algolia/models/analytics/search_no_result_event.rb +219 -0
  68. data/lib/algolia/models/analytics/top_country.rb +207 -0
  69. data/lib/algolia/models/analytics/top_hit.rb +207 -0
  70. data/lib/algolia/models/analytics/top_hit_with_analytics.rb +285 -0
  71. data/lib/algolia/models/analytics/top_hits_response.rb +197 -0
  72. data/lib/algolia/models/analytics/top_hits_response_with_analytics.rb +197 -0
  73. data/lib/algolia/models/analytics/top_search.rb +219 -0
  74. data/lib/algolia/models/analytics/top_search_with_analytics.rb +309 -0
  75. data/lib/algolia/models/analytics/top_searches_response.rb +197 -0
  76. data/lib/algolia/models/analytics/top_searches_response_with_analytics.rb +197 -0
  77. data/lib/algolia/models/analytics/user_with_date.rb +207 -0
  78. data/lib/algolia/models/ingestion/action_type.rb +34 -0
  79. data/lib/algolia/models/ingestion/auth_algolia.rb +207 -0
  80. data/lib/algolia/models/ingestion/auth_algolia_partial.rb +203 -0
  81. data/lib/algolia/models/ingestion/auth_api_key.rb +195 -0
  82. data/lib/algolia/models/ingestion/auth_api_key_partial.rb +193 -0
  83. data/lib/algolia/models/ingestion/auth_basic.rb +206 -0
  84. data/lib/algolia/models/ingestion/auth_basic_partial.rb +202 -0
  85. data/lib/algolia/models/ingestion/auth_google_service_account.rb +208 -0
  86. data/lib/algolia/models/ingestion/auth_google_service_account_partial.rb +204 -0
  87. data/lib/algolia/models/ingestion/auth_input.rb +99 -0
  88. data/lib/algolia/models/ingestion/auth_input_partial.rb +99 -0
  89. data/lib/algolia/models/ingestion/auth_o_auth.rb +220 -0
  90. data/lib/algolia/models/ingestion/auth_o_auth_partial.rb +214 -0
  91. data/lib/algolia/models/ingestion/authentication.rb +283 -0
  92. data/lib/algolia/models/ingestion/authentication_create.rb +249 -0
  93. data/lib/algolia/models/ingestion/authentication_create_response.rb +220 -0
  94. data/lib/algolia/models/ingestion/authentication_search.rb +197 -0
  95. data/lib/algolia/models/ingestion/authentication_sort_keys.rb +36 -0
  96. data/lib/algolia/models/ingestion/authentication_type.rb +36 -0
  97. data/lib/algolia/models/ingestion/authentication_update.rb +243 -0
  98. data/lib/algolia/models/ingestion/authentication_update_response.rb +220 -0
  99. data/lib/algolia/models/ingestion/big_commerce_channel.rb +207 -0
  100. data/lib/algolia/models/ingestion/big_commerce_metafield.rb +207 -0
  101. data/lib/algolia/models/ingestion/big_query_data_type.rb +33 -0
  102. data/lib/algolia/models/ingestion/delete_response.rb +195 -0
  103. data/lib/algolia/models/ingestion/destination.rb +283 -0
  104. data/lib/algolia/models/ingestion/destination_create.rb +250 -0
  105. data/lib/algolia/models/ingestion/destination_create_response.rb +220 -0
  106. data/lib/algolia/models/ingestion/destination_index_name.rb +238 -0
  107. data/lib/algolia/models/ingestion/destination_index_prefix.rb +195 -0
  108. data/lib/algolia/models/ingestion/destination_input.rb +96 -0
  109. data/lib/algolia/models/ingestion/destination_search.rb +197 -0
  110. data/lib/algolia/models/ingestion/destination_sort_keys.rb +35 -0
  111. data/lib/algolia/models/ingestion/destination_type.rb +34 -0
  112. data/lib/algolia/models/ingestion/destination_update.rb +243 -0
  113. data/lib/algolia/models/ingestion/destination_update_response.rb +220 -0
  114. data/lib/algolia/models/ingestion/docker_image_type.rb +34 -0
  115. data/lib/algolia/models/ingestion/docker_registry.rb +33 -0
  116. data/lib/algolia/models/ingestion/docker_source_discover.rb +207 -0
  117. data/lib/algolia/models/ingestion/docker_source_streams.rb +196 -0
  118. data/lib/algolia/models/ingestion/error_base.rb +196 -0
  119. data/lib/algolia/models/ingestion/event.rb +311 -0
  120. data/lib/algolia/models/ingestion/event_sort_keys.rb +34 -0
  121. data/lib/algolia/models/ingestion/event_status.rb +37 -0
  122. data/lib/algolia/models/ingestion/event_type.rb +35 -0
  123. data/lib/algolia/models/ingestion/list_authentications_response.rb +207 -0
  124. data/lib/algolia/models/ingestion/list_destinations_response.rb +207 -0
  125. data/lib/algolia/models/ingestion/list_events_response.rb +218 -0
  126. data/lib/algolia/models/ingestion/list_sources_response.rb +207 -0
  127. data/lib/algolia/models/ingestion/list_tasks_response.rb +208 -0
  128. data/lib/algolia/models/ingestion/mapping_type_csv.rb +36 -0
  129. data/lib/algolia/models/ingestion/method_type.rb +33 -0
  130. data/lib/algolia/models/ingestion/on_demand_date_utils_input.rb +208 -0
  131. data/lib/algolia/models/ingestion/on_demand_trigger.rb +227 -0
  132. data/lib/algolia/models/ingestion/on_demand_trigger_input.rb +217 -0
  133. data/lib/algolia/models/ingestion/on_demand_trigger_type.rb +32 -0
  134. data/lib/algolia/models/ingestion/order_keys.rb +33 -0
  135. data/lib/algolia/models/ingestion/pagination.rb +227 -0
  136. data/lib/algolia/models/ingestion/platform.rb +33 -0
  137. data/lib/algolia/models/ingestion/platform_none.rb +32 -0
  138. data/lib/algolia/models/ingestion/platform_with_none.rb +96 -0
  139. data/lib/algolia/models/ingestion/record_type.rb +33 -0
  140. data/lib/algolia/models/ingestion/run.rb +359 -0
  141. data/lib/algolia/models/ingestion/run_list_response.rb +218 -0
  142. data/lib/algolia/models/ingestion/run_outcome.rb +34 -0
  143. data/lib/algolia/models/ingestion/run_progress.rb +201 -0
  144. data/lib/algolia/models/ingestion/run_reason_code.rb +38 -0
  145. data/lib/algolia/models/ingestion/run_response.rb +208 -0
  146. data/lib/algolia/models/ingestion/run_sort_keys.rb +34 -0
  147. data/lib/algolia/models/ingestion/run_status.rb +36 -0
  148. data/lib/algolia/models/ingestion/run_type.rb +34 -0
  149. data/lib/algolia/models/ingestion/schedule_date_utils_input.rb +214 -0
  150. data/lib/algolia/models/ingestion/schedule_trigger.rb +251 -0
  151. data/lib/algolia/models/ingestion/schedule_trigger_input.rb +229 -0
  152. data/lib/algolia/models/ingestion/schedule_trigger_type.rb +32 -0
  153. data/lib/algolia/models/ingestion/source.rb +282 -0
  154. data/lib/algolia/models/ingestion/source_big_commerce.rb +235 -0
  155. data/lib/algolia/models/ingestion/source_big_query.rb +278 -0
  156. data/lib/algolia/models/ingestion/source_commercetools.rb +238 -0
  157. data/lib/algolia/models/ingestion/source_create.rb +248 -0
  158. data/lib/algolia/models/ingestion/source_create_response.rb +218 -0
  159. data/lib/algolia/models/ingestion/source_csv.rb +276 -0
  160. data/lib/algolia/models/ingestion/source_docker.rb +261 -0
  161. data/lib/algolia/models/ingestion/source_input.rb +100 -0
  162. data/lib/algolia/models/ingestion/source_json.rb +236 -0
  163. data/lib/algolia/models/ingestion/source_search.rb +196 -0
  164. data/lib/algolia/models/ingestion/source_sort_keys.rb +35 -0
  165. data/lib/algolia/models/ingestion/source_type.rb +37 -0
  166. data/lib/algolia/models/ingestion/source_update.rb +211 -0
  167. data/lib/algolia/models/ingestion/source_update_commercetools.rb +207 -0
  168. data/lib/algolia/models/ingestion/source_update_docker.rb +246 -0
  169. data/lib/algolia/models/ingestion/source_update_input.rb +99 -0
  170. data/lib/algolia/models/ingestion/source_update_response.rb +218 -0
  171. data/lib/algolia/models/ingestion/subscription_trigger.rb +217 -0
  172. data/lib/algolia/models/ingestion/subscription_trigger_type.rb +32 -0
  173. data/lib/algolia/models/ingestion/task.rb +334 -0
  174. data/lib/algolia/models/ingestion/task_create.rb +299 -0
  175. data/lib/algolia/models/ingestion/task_create_response.rb +208 -0
  176. data/lib/algolia/models/ingestion/task_create_trigger.rb +97 -0
  177. data/lib/algolia/models/ingestion/task_input.rb +96 -0
  178. data/lib/algolia/models/ingestion/task_search.rb +196 -0
  179. data/lib/algolia/models/ingestion/task_sort_keys.rb +36 -0
  180. data/lib/algolia/models/ingestion/task_update.rb +250 -0
  181. data/lib/algolia/models/ingestion/task_update_response.rb +208 -0
  182. data/lib/algolia/models/ingestion/trigger.rb +97 -0
  183. data/lib/algolia/models/ingestion/trigger_type.rb +34 -0
  184. data/lib/algolia/models/ingestion/trigger_update_input.rb +196 -0
  185. data/lib/algolia/models/ingestion/window.rb +208 -0
  186. data/lib/algolia/models/insights/add_to_cart_event.rb +32 -0
  187. data/lib/algolia/models/insights/added_to_cart_object_ids.rb +384 -0
  188. data/lib/algolia/models/insights/added_to_cart_object_ids_after_search.rb +419 -0
  189. data/lib/algolia/models/insights/click_event.rb +32 -0
  190. data/lib/algolia/models/insights/clicked_filters.rb +351 -0
  191. data/lib/algolia/models/insights/clicked_object_ids.rb +341 -0
  192. data/lib/algolia/models/insights/clicked_object_ids_after_search.rb +418 -0
  193. data/lib/algolia/models/insights/conversion_event.rb +32 -0
  194. data/lib/algolia/models/insights/converted_filters.rb +350 -0
  195. data/lib/algolia/models/insights/converted_object_ids.rb +351 -0
  196. data/lib/algolia/models/insights/converted_object_ids_after_search.rb +386 -0
  197. data/lib/algolia/models/insights/discount.rb +97 -0
  198. data/lib/algolia/models/insights/error_base.rb +196 -0
  199. data/lib/algolia/models/insights/events_items.rb +106 -0
  200. data/lib/algolia/models/insights/events_response.rb +204 -0
  201. data/lib/algolia/models/insights/insights_events.rb +215 -0
  202. data/lib/algolia/models/insights/object_data.rb +211 -0
  203. data/lib/algolia/models/insights/object_data_after_search.rb +221 -0
  204. data/lib/algolia/models/insights/price.rb +97 -0
  205. data/lib/algolia/models/insights/purchase_event.rb +32 -0
  206. data/lib/algolia/models/insights/purchased_object_ids.rb +384 -0
  207. data/lib/algolia/models/insights/purchased_object_ids_after_search.rb +419 -0
  208. data/lib/algolia/models/insights/view_event.rb +32 -0
  209. data/lib/algolia/models/insights/viewed_filters.rb +351 -0
  210. data/lib/algolia/models/insights/viewed_object_ids.rb +351 -0
  211. data/lib/algolia/models/monitoring/error_base.rb +196 -0
  212. data/lib/algolia/models/monitoring/get_inventory403_response.rb +192 -0
  213. data/lib/algolia/models/monitoring/incident.rb +225 -0
  214. data/lib/algolia/models/monitoring/incidents_inner.rb +202 -0
  215. data/lib/algolia/models/monitoring/incidents_response.rb +194 -0
  216. data/lib/algolia/models/monitoring/indexing_time_response.rb +192 -0
  217. data/lib/algolia/models/monitoring/indexing_time_response_metrics.rb +194 -0
  218. data/lib/algolia/models/monitoring/infrastructure_response.rb +192 -0
  219. data/lib/algolia/models/monitoring/infrastructure_response_metrics.rb +243 -0
  220. data/lib/algolia/models/monitoring/inventory_response.rb +194 -0
  221. data/lib/algolia/models/monitoring/latency_response.rb +192 -0
  222. data/lib/algolia/models/monitoring/latency_response_metrics.rb +194 -0
  223. data/lib/algolia/models/monitoring/metric.rb +37 -0
  224. data/lib/algolia/models/monitoring/period.rb +36 -0
  225. data/lib/algolia/models/monitoring/probes_metric.rb +203 -0
  226. data/lib/algolia/models/monitoring/region.rb +46 -0
  227. data/lib/algolia/models/monitoring/server.rb +272 -0
  228. data/lib/algolia/models/monitoring/server_status.rb +32 -0
  229. data/lib/algolia/models/monitoring/status.rb +35 -0
  230. data/lib/algolia/models/monitoring/status_response.rb +194 -0
  231. data/lib/algolia/models/monitoring/time_inner.rb +203 -0
  232. data/lib/algolia/models/monitoring/type.rb +32 -0
  233. data/lib/algolia/models/personalization/delete_user_profile_response.rb +207 -0
  234. data/lib/algolia/models/personalization/error_base.rb +196 -0
  235. data/lib/algolia/models/personalization/event_scoring.rb +219 -0
  236. data/lib/algolia/models/personalization/facet_scoring.rb +207 -0
  237. data/lib/algolia/models/personalization/get_user_token_response.rb +219 -0
  238. data/lib/algolia/models/personalization/personalization_strategy_params.rb +223 -0
  239. data/lib/algolia/models/personalization/set_personalization_strategy_response.rb +195 -0
  240. data/lib/algolia/models/query-suggestions/base_query_suggestions_configuration_response.rb +223 -0
  241. data/lib/algolia/models/query-suggestions/base_query_suggestions_configuration_with_index.rb +195 -0
  242. data/lib/algolia/models/query-suggestions/base_response.rb +203 -0
  243. data/lib/algolia/models/query-suggestions/error_base.rb +196 -0
  244. data/lib/algolia/models/query-suggestions/facet.rb +204 -0
  245. data/lib/algolia/models/query-suggestions/get_config_status200_response.rb +233 -0
  246. data/lib/algolia/models/query-suggestions/get_log_file200_response.rb +244 -0
  247. data/lib/algolia/models/query-suggestions/languages.rb +97 -0
  248. data/lib/algolia/models/query-suggestions/log_level.rb +34 -0
  249. data/lib/algolia/models/query-suggestions/query_suggestions_configuration.rb +255 -0
  250. data/lib/algolia/models/query-suggestions/query_suggestions_configuration_response.rb +315 -0
  251. data/lib/algolia/models/query-suggestions/query_suggestions_configuration_with_index.rb +275 -0
  252. data/lib/algolia/models/query-suggestions/source_index.rb +305 -0
  253. data/lib/algolia/models/recommend/advanced_syntax_features.rb +33 -0
  254. data/lib/algolia/models/recommend/alternatives_as_exact.rb +34 -0
  255. data/lib/algolia/models/recommend/anchoring.rb +35 -0
  256. data/lib/algolia/models/recommend/around_precision.rb +97 -0
  257. data/lib/algolia/models/recommend/around_precision_from_value_inner.rb +201 -0
  258. data/lib/algolia/models/recommend/around_radius.rb +97 -0
  259. data/lib/algolia/models/recommend/around_radius_all.rb +32 -0
  260. data/lib/algolia/models/recommend/automatic_facet_filter.rb +216 -0
  261. data/lib/algolia/models/recommend/automatic_facet_filters.rb +97 -0
  262. data/lib/algolia/models/recommend/base_recommend_request.rb +233 -0
  263. data/lib/algolia/models/recommend/base_recommendations_query.rb +246 -0
  264. data/lib/algolia/models/recommend/base_recommended_for_you_query.rb +234 -0
  265. data/lib/algolia/models/recommend/base_recommended_for_you_query_parameters.rb +195 -0
  266. data/lib/algolia/models/recommend/base_search_params.rb +564 -0
  267. data/lib/algolia/models/recommend/base_search_params_without_query.rb +546 -0
  268. data/lib/algolia/models/recommend/base_search_response.rb +517 -0
  269. data/lib/algolia/models/recommend/base_trending_facets_query.rb +226 -0
  270. data/lib/algolia/models/recommend/base_trending_items_query.rb +252 -0
  271. data/lib/algolia/models/recommend/condition.rb +244 -0
  272. data/lib/algolia/models/recommend/consequence.rb +239 -0
  273. data/lib/algolia/models/recommend/consequence_hide.rb +196 -0
  274. data/lib/algolia/models/recommend/consequence_params.rb +1121 -0
  275. data/lib/algolia/models/recommend/consequence_query.rb +97 -0
  276. data/lib/algolia/models/recommend/consequence_query_object.rb +207 -0
  277. data/lib/algolia/models/recommend/deleted_at_response.rb +208 -0
  278. data/lib/algolia/models/recommend/distinct.rb +97 -0
  279. data/lib/algolia/models/recommend/edit.rb +234 -0
  280. data/lib/algolia/models/recommend/edit_type.rb +33 -0
  281. data/lib/algolia/models/recommend/error_base.rb +196 -0
  282. data/lib/algolia/models/recommend/exact_on_single_word_query.rb +34 -0
  283. data/lib/algolia/models/recommend/exhaustive.rb +234 -0
  284. data/lib/algolia/models/recommend/facet_filters.rb +97 -0
  285. data/lib/algolia/models/recommend/facet_ordering.rb +205 -0
  286. data/lib/algolia/models/recommend/facets.rb +196 -0
  287. data/lib/algolia/models/recommend/facets_stats.rb +223 -0
  288. data/lib/algolia/models/recommend/get_recommend_task_response.rb +216 -0
  289. data/lib/algolia/models/recommend/get_recommendations_params.rb +198 -0
  290. data/lib/algolia/models/recommend/get_recommendations_response.rb +194 -0
  291. data/lib/algolia/models/recommend/highlight_result.rb +96 -0
  292. data/lib/algolia/models/recommend/highlight_result_option.rb +253 -0
  293. data/lib/algolia/models/recommend/ignore_plurals.rb +97 -0
  294. data/lib/algolia/models/recommend/index_settings_as_search_params.rb +723 -0
  295. data/lib/algolia/models/recommend/match_level.rb +34 -0
  296. data/lib/algolia/models/recommend/matched_geo_location.rb +213 -0
  297. data/lib/algolia/models/recommend/mixed_search_filters.rb +96 -0
  298. data/lib/algolia/models/recommend/mode.rb +33 -0
  299. data/lib/algolia/models/recommend/numeric_filters.rb +97 -0
  300. data/lib/algolia/models/recommend/optional_filters.rb +97 -0
  301. data/lib/algolia/models/recommend/params.rb +220 -0
  302. data/lib/algolia/models/recommend/personalization.rb +213 -0
  303. data/lib/algolia/models/recommend/promote.rb +96 -0
  304. data/lib/algolia/models/recommend/promote_object_id.rb +208 -0
  305. data/lib/algolia/models/recommend/promote_object_ids.rb +210 -0
  306. data/lib/algolia/models/recommend/query_type.rb +34 -0
  307. data/lib/algolia/models/recommend/ranking_info.rb +328 -0
  308. data/lib/algolia/models/recommend/re_ranking_apply_filter.rb +97 -0
  309. data/lib/algolia/models/recommend/recommend_hit.rb +271 -0
  310. data/lib/algolia/models/recommend/recommend_models.rb +35 -0
  311. data/lib/algolia/models/recommend/recommendation_models.rb +33 -0
  312. data/lib/algolia/models/recommend/recommendations_hit.rb +96 -0
  313. data/lib/algolia/models/recommend/recommendations_hits.rb +216 -0
  314. data/lib/algolia/models/recommend/recommendations_query.rb +304 -0
  315. data/lib/algolia/models/recommend/recommendations_request.rb +98 -0
  316. data/lib/algolia/models/recommend/recommendations_results.rb +553 -0
  317. data/lib/algolia/models/recommend/recommended_for_you_model.rb +32 -0
  318. data/lib/algolia/models/recommend/recommended_for_you_query.rb +292 -0
  319. data/lib/algolia/models/recommend/recommended_for_you_query_parameters.rb +1105 -0
  320. data/lib/algolia/models/recommend/redirect.rb +195 -0
  321. data/lib/algolia/models/recommend/redirect_rule_index_metadata.rb +242 -0
  322. data/lib/algolia/models/recommend/redirect_rule_index_metadata_data.rb +195 -0
  323. data/lib/algolia/models/recommend/remove_stop_words.rb +97 -0
  324. data/lib/algolia/models/recommend/remove_words_if_no_results.rb +35 -0
  325. data/lib/algolia/models/recommend/rendering_content.rb +193 -0
  326. data/lib/algolia/models/recommend/rule_response.rb +246 -0
  327. data/lib/algolia/models/recommend/rule_response_metadata.rb +193 -0
  328. data/lib/algolia/models/recommend/search_params_object.rb +1103 -0
  329. data/lib/algolia/models/recommend/search_params_query.rb +193 -0
  330. data/lib/algolia/models/recommend/search_recommend_rules_params.rb +268 -0
  331. data/lib/algolia/models/recommend/search_recommend_rules_response.rb +233 -0
  332. data/lib/algolia/models/recommend/semantic_search.rb +198 -0
  333. data/lib/algolia/models/recommend/snippet_result.rb +96 -0
  334. data/lib/algolia/models/recommend/snippet_result_option.rb +229 -0
  335. data/lib/algolia/models/recommend/sort_remaining_by.rb +34 -0
  336. data/lib/algolia/models/recommend/tag_filters.rb +97 -0
  337. data/lib/algolia/models/recommend/task_status.rb +33 -0
  338. data/lib/algolia/models/recommend/trending_facet_hit.rb +238 -0
  339. data/lib/algolia/models/recommend/trending_facets_model.rb +32 -0
  340. data/lib/algolia/models/recommend/trending_facets_query.rb +284 -0
  341. data/lib/algolia/models/recommend/trending_items_model.rb +32 -0
  342. data/lib/algolia/models/recommend/trending_items_query.rb +310 -0
  343. data/lib/algolia/models/recommend/typo_tolerance.rb +97 -0
  344. data/lib/algolia/models/recommend/typo_tolerance_enum.rb +33 -0
  345. data/lib/algolia/models/recommend/value.rb +226 -0
  346. data/lib/algolia/models/search/acl.rb +47 -0
  347. data/lib/algolia/models/search/action.rb +38 -0
  348. data/lib/algolia/models/search/add_api_key_response.rb +207 -0
  349. data/lib/algolia/models/search/advanced_syntax_features.rb +33 -0
  350. data/lib/algolia/models/search/alternatives_as_exact.rb +34 -0
  351. data/lib/algolia/models/search/anchoring.rb +35 -0
  352. data/lib/algolia/models/search/api_key.rb +272 -0
  353. data/lib/algolia/models/search/around_precision.rb +97 -0
  354. data/lib/algolia/models/search/around_precision_from_value_inner.rb +201 -0
  355. data/lib/algolia/models/search/around_radius.rb +97 -0
  356. data/lib/algolia/models/search/around_radius_all.rb +32 -0
  357. data/lib/algolia/models/search/assign_user_id_params.rb +196 -0
  358. data/lib/algolia/models/search/attribute_to_update.rb +96 -0
  359. data/lib/algolia/models/search/automatic_facet_filter.rb +216 -0
  360. data/lib/algolia/models/search/automatic_facet_filters.rb +97 -0
  361. data/lib/algolia/models/search/base_get_api_key_response.rb +205 -0
  362. data/lib/algolia/models/search/base_index_settings.rb +366 -0
  363. data/lib/algolia/models/search/base_search_params.rb +564 -0
  364. data/lib/algolia/models/search/base_search_params_without_query.rb +546 -0
  365. data/lib/algolia/models/search/base_search_response.rb +517 -0
  366. data/lib/algolia/models/search/batch_assign_user_ids_params.rb +210 -0
  367. data/lib/algolia/models/search/batch_dictionary_entries_params.rb +208 -0
  368. data/lib/algolia/models/search/batch_dictionary_entries_request.rb +227 -0
  369. data/lib/algolia/models/search/batch_params.rb +197 -0
  370. data/lib/algolia/models/search/batch_request.rb +228 -0
  371. data/lib/algolia/models/search/batch_response.rb +209 -0
  372. data/lib/algolia/models/search/batch_write_params.rb +197 -0
  373. data/lib/algolia/models/search/browse_params.rb +96 -0
  374. data/lib/algolia/models/search/browse_params_object.rb +1113 -0
  375. data/lib/algolia/models/search/browse_response.rb +568 -0
  376. data/lib/algolia/models/search/built_in_operation.rb +229 -0
  377. data/lib/algolia/models/search/built_in_operation_type.rb +38 -0
  378. data/lib/algolia/models/search/condition.rb +244 -0
  379. data/lib/algolia/models/search/consequence.rb +239 -0
  380. data/lib/algolia/models/search/consequence_hide.rb +196 -0
  381. data/lib/algolia/models/search/consequence_params.rb +1121 -0
  382. data/lib/algolia/models/search/consequence_query.rb +97 -0
  383. data/lib/algolia/models/search/consequence_query_object.rb +207 -0
  384. data/lib/algolia/models/search/created_at_response.rb +196 -0
  385. data/lib/algolia/models/search/cursor.rb +193 -0
  386. data/lib/algolia/models/search/delete_api_key_response.rb +195 -0
  387. data/lib/algolia/models/search/delete_by_params.rb +263 -0
  388. data/lib/algolia/models/search/delete_source_response.rb +195 -0
  389. data/lib/algolia/models/search/deleted_at_response.rb +208 -0
  390. data/lib/algolia/models/search/dictionary_action.rb +33 -0
  391. data/lib/algolia/models/search/dictionary_entry.rb +276 -0
  392. data/lib/algolia/models/search/dictionary_entry_state.rb +33 -0
  393. data/lib/algolia/models/search/dictionary_language.rb +194 -0
  394. data/lib/algolia/models/search/dictionary_settings_params.rb +195 -0
  395. data/lib/algolia/models/search/dictionary_type.rb +34 -0
  396. data/lib/algolia/models/search/distinct.rb +97 -0
  397. data/lib/algolia/models/search/edit.rb +234 -0
  398. data/lib/algolia/models/search/edit_type.rb +33 -0
  399. data/lib/algolia/models/search/error_base.rb +196 -0
  400. data/lib/algolia/models/search/exact_on_single_word_query.rb +34 -0
  401. data/lib/algolia/models/search/exhaustive.rb +234 -0
  402. data/lib/algolia/models/search/facet_filters.rb +97 -0
  403. data/lib/algolia/models/search/facet_hits.rb +219 -0
  404. data/lib/algolia/models/search/facet_ordering.rb +205 -0
  405. data/lib/algolia/models/search/facets.rb +196 -0
  406. data/lib/algolia/models/search/facets_stats.rb +223 -0
  407. data/lib/algolia/models/search/fetched_index.rb +313 -0
  408. data/lib/algolia/models/search/get_api_key_response.rb +301 -0
  409. data/lib/algolia/models/search/get_dictionary_settings_response.rb +194 -0
  410. data/lib/algolia/models/search/get_logs_response.rb +196 -0
  411. data/lib/algolia/models/search/get_objects_params.rb +197 -0
  412. data/lib/algolia/models/search/get_objects_request.rb +220 -0
  413. data/lib/algolia/models/search/get_objects_response.rb +197 -0
  414. data/lib/algolia/models/search/get_task_response.rb +216 -0
  415. data/lib/algolia/models/search/get_top_user_ids_response.rb +198 -0
  416. data/lib/algolia/models/search/has_pending_mappings_response.rb +207 -0
  417. data/lib/algolia/models/search/highlight_result.rb +96 -0
  418. data/lib/algolia/models/search/highlight_result_option.rb +253 -0
  419. data/lib/algolia/models/search/hit.rb +241 -0
  420. data/lib/algolia/models/search/ignore_plurals.rb +97 -0
  421. data/lib/algolia/models/search/index_settings.rb +912 -0
  422. data/lib/algolia/models/search/index_settings_as_search_params.rb +723 -0
  423. data/lib/algolia/models/search/languages.rb +221 -0
  424. data/lib/algolia/models/search/list_api_keys_response.rb +197 -0
  425. data/lib/algolia/models/search/list_clusters_response.rb +198 -0
  426. data/lib/algolia/models/search/list_indices_response.rb +207 -0
  427. data/lib/algolia/models/search/list_user_ids_response.rb +198 -0
  428. data/lib/algolia/models/search/log.rb +358 -0
  429. data/lib/algolia/models/search/log_query.rb +213 -0
  430. data/lib/algolia/models/search/log_type.rb +35 -0
  431. data/lib/algolia/models/search/match_level.rb +34 -0
  432. data/lib/algolia/models/search/matched_geo_location.rb +213 -0
  433. data/lib/algolia/models/search/mixed_search_filters.rb +96 -0
  434. data/lib/algolia/models/search/mode.rb +33 -0
  435. data/lib/algolia/models/search/multiple_batch_request.rb +240 -0
  436. data/lib/algolia/models/search/multiple_batch_response.rb +211 -0
  437. data/lib/algolia/models/search/numeric_filters.rb +97 -0
  438. data/lib/algolia/models/search/operation_index_params.rb +240 -0
  439. data/lib/algolia/models/search/operation_type.rb +33 -0
  440. data/lib/algolia/models/search/optional_filters.rb +97 -0
  441. data/lib/algolia/models/search/params.rb +220 -0
  442. data/lib/algolia/models/search/personalization.rb +213 -0
  443. data/lib/algolia/models/search/promote.rb +96 -0
  444. data/lib/algolia/models/search/promote_object_id.rb +208 -0
  445. data/lib/algolia/models/search/promote_object_ids.rb +210 -0
  446. data/lib/algolia/models/search/query_type.rb +34 -0
  447. data/lib/algolia/models/search/ranking_info.rb +328 -0
  448. data/lib/algolia/models/search/re_ranking_apply_filter.rb +97 -0
  449. data/lib/algolia/models/search/redirect.rb +195 -0
  450. data/lib/algolia/models/search/redirect_rule_index_metadata.rb +242 -0
  451. data/lib/algolia/models/search/redirect_rule_index_metadata_data.rb +195 -0
  452. data/lib/algolia/models/search/remove_stop_words.rb +97 -0
  453. data/lib/algolia/models/search/remove_user_id_response.rb +195 -0
  454. data/lib/algolia/models/search/remove_words_if_no_results.rb +35 -0
  455. data/lib/algolia/models/search/rendering_content.rb +193 -0
  456. data/lib/algolia/models/search/replace_source_response.rb +195 -0
  457. data/lib/algolia/models/search/rule.rb +249 -0
  458. data/lib/algolia/models/search/save_object_response.rb +217 -0
  459. data/lib/algolia/models/search/save_synonym_response.rb +219 -0
  460. data/lib/algolia/models/search/scope_type.rb +34 -0
  461. data/lib/algolia/models/search/search_dictionary_entries_params.rb +244 -0
  462. data/lib/algolia/models/search/search_for_facet_values_request.rb +227 -0
  463. data/lib/algolia/models/search/search_for_facet_values_response.rb +218 -0
  464. data/lib/algolia/models/search/search_for_facets.rb +1158 -0
  465. data/lib/algolia/models/search/search_for_facets_options.rb +274 -0
  466. data/lib/algolia/models/search/search_for_hits.rb +1134 -0
  467. data/lib/algolia/models/search/search_for_hits_options.rb +226 -0
  468. data/lib/algolia/models/search/search_hits.rb +223 -0
  469. data/lib/algolia/models/search/search_method_params.rb +227 -0
  470. data/lib/algolia/models/search/search_params.rb +96 -0
  471. data/lib/algolia/models/search/search_params_object.rb +1103 -0
  472. data/lib/algolia/models/search/search_params_query.rb +193 -0
  473. data/lib/algolia/models/search/search_params_string.rb +193 -0
  474. data/lib/algolia/models/search/search_query.rb +96 -0
  475. data/lib/algolia/models/search/search_response.rb +560 -0
  476. data/lib/algolia/models/search/search_responses.rb +196 -0
  477. data/lib/algolia/models/search/search_result.rb +96 -0
  478. data/lib/algolia/models/search/search_rules_params.rb +311 -0
  479. data/lib/algolia/models/search/search_rules_response.rb +233 -0
  480. data/lib/algolia/models/search/search_strategy.rb +33 -0
  481. data/lib/algolia/models/search/search_synonyms_params.rb +193 -0
  482. data/lib/algolia/models/search/search_synonyms_response.rb +212 -0
  483. data/lib/algolia/models/search/search_type_default.rb +32 -0
  484. data/lib/algolia/models/search/search_type_facet.rb +32 -0
  485. data/lib/algolia/models/search/search_user_ids_params.rb +244 -0
  486. data/lib/algolia/models/search/search_user_ids_response.rb +264 -0
  487. data/lib/algolia/models/search/semantic_search.rb +198 -0
  488. data/lib/algolia/models/search/snippet_result.rb +96 -0
  489. data/lib/algolia/models/search/snippet_result_option.rb +229 -0
  490. data/lib/algolia/models/search/sort_remaining_by.rb +34 -0
  491. data/lib/algolia/models/search/source.rb +206 -0
  492. data/lib/algolia/models/search/standard_entries.rb +224 -0
  493. data/lib/algolia/models/search/synonym_hit.rb +295 -0
  494. data/lib/algolia/models/search/synonym_type.rb +36 -0
  495. data/lib/algolia/models/search/tag_filters.rb +97 -0
  496. data/lib/algolia/models/search/task_status.rb +33 -0
  497. data/lib/algolia/models/search/time_range.rb +207 -0
  498. data/lib/algolia/models/search/typo_tolerance.rb +97 -0
  499. data/lib/algolia/models/search/typo_tolerance_enum.rb +33 -0
  500. data/lib/algolia/models/search/update_api_key_response.rb +207 -0
  501. data/lib/algolia/models/search/updated_at_response.rb +208 -0
  502. data/lib/algolia/models/search/updated_at_with_object_id_response.rb +214 -0
  503. data/lib/algolia/models/search/updated_rule_response.rb +219 -0
  504. data/lib/algolia/models/search/user_highlight_result.rb +205 -0
  505. data/lib/algolia/models/search/user_hit.rb +269 -0
  506. data/lib/algolia/models/search/user_id.rb +247 -0
  507. data/lib/algolia/models/search/value.rb +226 -0
  508. data/lib/algolia/transport/echo_requester.rb +10 -0
  509. data/lib/algolia/{http → transport/http}/http_requester.rb +24 -19
  510. data/lib/algolia/{http → transport/http}/response.rb +11 -1
  511. data/lib/algolia/transport/request_options.rb +19 -31
  512. data/lib/algolia/transport/retry_strategy.rb +5 -8
  513. data/lib/algolia/transport/stateful_host.rb +1 -2
  514. data/lib/algolia/transport/transport.rb +33 -73
  515. data/lib/algolia/user_agent.rb +4 -14
  516. data/lib/algolia/version.rb +3 -1
  517. data/lib/algolia.rb +23 -40
  518. metadata +522 -217
  519. data/.circleci/config.yml +0 -155
  520. data/.dockerignore +0 -38
  521. data/.github/ISSUE_TEMPLATE.md +0 -20
  522. data/.github/PULL_REQUEST_TEMPLATE.md +0 -22
  523. data/.gitignore +0 -40
  524. data/.rubocop.yml +0 -189
  525. data/.rubocop_todo.yml +0 -14
  526. data/CODE_OF_CONDUCT.md +0 -74
  527. data/CONTRIBUTING.MD +0 -184
  528. data/DOCKER_README.MD +0 -89
  529. data/Dockerfile +0 -7
  530. data/LICENSE +0 -21
  531. data/SECURITY.md +0 -3
  532. data/Steepfile +0 -6
  533. data/bin/console +0 -21
  534. data/bin/setup +0 -8
  535. data/lib/algolia/account_client.rb +0 -65
  536. data/lib/algolia/analytics_client.rb +0 -105
  537. data/lib/algolia/config/analytics_config.rb +0 -20
  538. data/lib/algolia/config/base_config.rb +0 -43
  539. data/lib/algolia/config/insights_config.rb +0 -20
  540. data/lib/algolia/config/personalization_config.rb +0 -20
  541. data/lib/algolia/config/recommend_config.rb +0 -6
  542. data/lib/algolia/config/recommendation_config.rb +0 -7
  543. data/lib/algolia/config/search_config.rb +0 -40
  544. data/lib/algolia/defaults.rb +0 -35
  545. data/lib/algolia/helpers.rb +0 -134
  546. data/lib/algolia/insights_client.rb +0 -238
  547. data/lib/algolia/iterators/base_iterator.rb +0 -19
  548. data/lib/algolia/iterators/object_iterator.rb +0 -28
  549. data/lib/algolia/iterators/paginator_iterator.rb +0 -46
  550. data/lib/algolia/iterators/rule_iterator.rb +0 -9
  551. data/lib/algolia/iterators/synonym_iterator.rb +0 -9
  552. data/lib/algolia/personalization_client.rb +0 -60
  553. data/lib/algolia/recommend_client.rb +0 -134
  554. data/lib/algolia/recommendation_client.rb +0 -7
  555. data/lib/algolia/responses/add_api_key_response.rb +0 -38
  556. data/lib/algolia/responses/base_response.rb +0 -9
  557. data/lib/algolia/responses/delete_api_key_response.rb +0 -40
  558. data/lib/algolia/responses/dictionary_response.rb +0 -33
  559. data/lib/algolia/responses/indexing_response.rb +0 -28
  560. data/lib/algolia/responses/multiple_batch_indexing_response.rb +0 -29
  561. data/lib/algolia/responses/multiple_response.rb +0 -45
  562. data/lib/algolia/responses/restore_api_key_response.rb +0 -36
  563. data/lib/algolia/responses/update_api_key_response.rb +0 -39
  564. data/lib/algolia/search_client.rb +0 -791
  565. data/lib/algolia/search_index.rb +0 -1059
  566. data/renovate.json +0 -5
  567. data/sig/config/algolia_config.rbs +0 -24
  568. data/sig/config/analytics_config.rbs +0 -11
  569. data/sig/config/insights_config.rbs +0 -11
  570. data/sig/config/recommendation_config.rbs +0 -11
  571. data/sig/config/search_config.rbs +0 -11
  572. data/sig/enums/call_type.rbs +0 -5
  573. data/sig/helpers.rbs +0 -12
  574. data/sig/http/http_requester.rbs +0 -17
  575. data/sig/http/response.rbs +0 -14
  576. data/sig/interfaces/_connection.rbs +0 -16
  577. data/sig/iterators/base_iterator.rbs +0 -15
  578. data/sig/iterators/object_iterator.rbs +0 -6
  579. data/sig/iterators/paginator_iterator.rbs +0 -8
  580. data/sig/iterators/rule_iterator.rbs +0 -5
  581. data/sig/iterators/synonym_iterator.rbs +0 -5
  582. data/sig/transport/request_options.rbs +0 -33
  583. data/sig/transport/stateful_host.rbs +0 -21
  584. data/test/algolia/integration/account_client_test.rb +0 -47
  585. data/test/algolia/integration/analytics_client_test.rb +0 -117
  586. data/test/algolia/integration/base_test.rb +0 -9
  587. data/test/algolia/integration/insights_client_test.rb +0 -80
  588. data/test/algolia/integration/mocks/mock_requester.rb +0 -47
  589. data/test/algolia/integration/personalization_client_test.rb +0 -30
  590. data/test/algolia/integration/recommend_client_test.rb +0 -70
  591. data/test/algolia/integration/recommendation_client_test.rb +0 -30
  592. data/test/algolia/integration/search_client_test.rb +0 -465
  593. data/test/algolia/integration/search_index_test.rb +0 -729
  594. data/test/algolia/unit/algolia_config_test.rb +0 -16
  595. data/test/algolia/unit/helpers_test.rb +0 -92
  596. data/test/algolia/unit/http_requester_test.rb +0 -27
  597. data/test/algolia/unit/retry_strategy_test.rb +0 -139
  598. data/test/algolia/unit/user_agent_test.rb +0 -16
  599. data/test/test_helper.rb +0 -121
  600. data/upgrade_guide.md +0 -603
  601. /data/lib/algolia/{enums → transport}/call_type.rb +0 -0
  602. /data/lib/algolia/{enums → transport}/retry_outcome_type.rb +0 -0
@@ -1,1059 +0,0 @@
1
- module Algolia
2
- module Search
3
- # Class Index
4
- class Index
5
- include CallType
6
- include Helpers
7
-
8
- attr_reader :name, :transporter, :config, :logger
9
-
10
- # Initialize an index
11
- #
12
- # @param name [String] name of the index
13
- # @param transporter [Object] transport object used for the connection
14
- # @param config [Config] a Config object which contains your APP_ID and API_KEY
15
- # @param logger [LoggerHelper] an optional LoggerHelper object to use
16
- #
17
- def initialize(name, transporter, config, logger = nil)
18
- @name = name
19
- @transporter = transporter
20
- @config = config
21
- @logger = logger || LoggerHelper.create
22
- end
23
-
24
- # # # # # # # # # # # # # # # # # # # # #
25
- # MISC
26
- # # # # # # # # # # # # # # # # # # # # #
27
-
28
- # Wait the publication of a task on the server.
29
- # All server task are asynchronous and you can check with this method that the task is published.
30
- #
31
- # @param task_id the id of the task returned by server
32
- # @param time_before_retry the time in milliseconds before retry (default = 100ms)
33
- # @param opts [Hash] contains extra parameters to send with your query
34
- #
35
- def wait_task(task_id, time_before_retry = Defaults::WAIT_TASK_DEFAULT_TIME_BEFORE_RETRY, opts = {})
36
- loop do
37
- status = get_task_status(task_id, opts)
38
- if status == 'published'
39
- return
40
- end
41
- sleep(time_before_retry.to_f / 1000)
42
- end
43
- end
44
-
45
- # Check the status of a task on the server.
46
- # All server task are asynchronous and you can check the status of a task with this method.
47
- #
48
- # @param task_id [Integer] the id of the task returned by server
49
- # @param opts [Hash] contains extra parameters to send with your query
50
- #
51
- def get_task_status(task_id, opts = {})
52
- res = @transporter.read(:GET, path_encode('/1/indexes/%s/task/%s', @name, task_id), {}, opts)
53
- get_option(res, 'status')
54
- end
55
-
56
- # Delete the index content
57
- #
58
- # @param opts [Hash] contains extra parameters to send with your query
59
- #
60
- def clear_objects(opts = {})
61
- response = @transporter.write(:POST, path_encode('/1/indexes/%s/clear', @name), {}, opts)
62
-
63
- IndexingResponse.new(self, response)
64
- end
65
-
66
- # Delete the index content and wait for operation to complete
67
- #
68
- # @param opts [Hash] contains extra parameters to send with your query
69
- #
70
- def clear_objects!(opts = {})
71
- response = clear_objects(opts)
72
- response.wait(opts)
73
- end
74
-
75
- # Delete an existing index
76
- #
77
- # @param opts [Hash] contains extra parameters to send with your query
78
- #
79
- def delete(opts = {})
80
- response = @transporter.write(:DELETE, path_encode('/1/indexes/%s', @name), opts)
81
-
82
- IndexingResponse.new(self, response)
83
- end
84
-
85
- # Delete an existing index and wait for operation to complete
86
- #
87
- # @param opts [Hash] contains extra parameters to send with your query
88
- #
89
- def delete!(opts = {})
90
- response = delete(opts)
91
- response.wait(opts)
92
- end
93
-
94
- # Find object by the given condition.
95
- #
96
- # Options can be passed in request_options body:
97
- # - query (string): pass a query
98
- # - paginate (bool): choose if you want to iterate through all the
99
- # documents (true) or only the first page (false). Default is true.
100
- # The function takes a block to filter the results from search query
101
- # Usage example:
102
- # index.find_object({'query' => '', 'paginate' => true}) {|obj| obj.key?('company') and obj['company'] == 'Apple'}
103
- #
104
- # @param callback [Lambda] contains extra parameters to send with your query
105
- # @param opts [Hash] contains extra parameters to send with your query
106
- #
107
- # @return [Hash|AlgoliaHttpError] the matching object and its position in the result set
108
- #
109
- def find_object(callback, opts = {})
110
- request_options = symbolize_hash(opts)
111
- paginate = true
112
- page = 0
113
-
114
- query = request_options.delete(:query) || ''
115
- paginate = request_options.delete(:paginate) if request_options.has_key?(:paginate)
116
-
117
- has_next_page = true
118
- while has_next_page
119
- request_options[:page] = page
120
- res = symbolize_hash(search(query, request_options))
121
-
122
- res[:hits].each_with_index do |hit, i|
123
- if callback.call(hit)
124
- return {
125
- object: hit,
126
- position: i,
127
- page: page
128
- }
129
- end
130
- end
131
-
132
- has_next_page = page + 1 < res[:nbPages]
133
- raise AlgoliaHttpError.new(404, 'Object not found') unless paginate && has_next_page
134
-
135
- page += 1
136
- end
137
- end
138
-
139
- # Retrieve the given object position in a set of results.
140
- #
141
- # @param [Array] objects the result set to browse
142
- # @param [String] object_id the object to look for
143
- #
144
- # @return [Integer] position of the object, or -1 if it's not in the array
145
- #
146
- def self.get_object_position(objects, object_id)
147
- hits = get_option(objects, 'hits')
148
- hits.find_index { |hit| get_option(hit, 'objectID') == object_id } || -1
149
- end
150
-
151
- # Copy the current index to the given destination name
152
- #
153
- # @param name [String] destination index name
154
- # @param opts [Hash] contains extra parameters to send with your query
155
- #
156
- # @return [IndexingResponse]
157
- #
158
- def copy_to(name, opts = {})
159
- response = @transporter.write(:POST, path_encode('/1/indexes/%s/operation', @name), { operation: 'copy', destination: name }, opts)
160
-
161
- IndexingResponse.new(self, response)
162
- end
163
-
164
- # Move the current index to the given destination name
165
- #
166
- # @param name [String] destination index name
167
- # @param opts [Hash] contains extra parameters to send with your query
168
- #
169
- # @return [IndexingResponse]
170
- #
171
- def move_to(name, opts = {})
172
- response = @transporter.write(:POST, path_encode('/1/indexes/%s/operation', @name), { operation: 'move', destination: name }, opts)
173
-
174
- IndexingResponse.new(self, response)
175
- end
176
-
177
- # # # # # # # # # # # # # # # # # # # # #
178
- # INDEXING
179
- # # # # # # # # # # # # # # # # # # # # #
180
-
181
- # Retrieve one object from the index
182
- #
183
- # @param object_id [String]
184
- # @param opts [Hash] contains extra parameters to send with your query
185
- #
186
- # @return [Hash]
187
- #
188
- def get_object(object_id, opts = {})
189
- @transporter.read(:GET, path_encode('/1/indexes/%s/%s', @name, object_id), {}, opts)
190
- end
191
-
192
- # Retrieve one or more objects in a single API call
193
- #
194
- # @param object_ids [Array]
195
- # @param opts [Hash] contains extra parameters to send with your query
196
- #
197
- # @return [Hash]
198
- #
199
- def get_objects(object_ids, opts = {})
200
- request_options = symbolize_hash(opts)
201
- attributes_to_retrieve = get_option(request_options, 'attributesToRetrieve')
202
- request_options.delete(:attributesToRetrieve)
203
-
204
- requests = []
205
- object_ids.each do |object_id|
206
- request = { indexName: @name, objectID: object_id.to_s }
207
-
208
- if attributes_to_retrieve
209
- request[:attributesToRetrieve] = attributes_to_retrieve
210
- end
211
-
212
- requests.push(request)
213
- end
214
-
215
- @transporter.read(:POST, '/1/indexes/*/objects', { 'requests': requests }, opts)
216
- end
217
-
218
- # Add an object to the index
219
- #
220
- # @param object [Hash] the object to save
221
- # @param opts [Hash] contains extra parameters to send with your query
222
- #
223
- # @return [IndexingResponse]
224
- #
225
- def save_object(object, opts = {})
226
- save_objects([object], opts)
227
- end
228
-
229
- # Add an object to the index and wait for operation to complete
230
- #
231
- # @param object [Hash] the object to save
232
- # @param opts [Hash] contains extra parameters to send with your query
233
- #
234
- # @return [IndexingResponse]
235
- #
236
- def save_object!(object, opts = {})
237
- response = save_objects([object], opts)
238
- response.wait(opts)
239
- end
240
-
241
- # Add several objects to the index
242
- #
243
- # @param objects [Array] the objects to save
244
- # @param opts [Hash] contains extra parameters to send with your query
245
- #
246
- # @return [IndexingResponse]
247
- #
248
- def save_objects(objects, opts = {})
249
- request_options = symbolize_hash(opts)
250
- generate_object_id = request_options[:auto_generate_object_id_if_not_exist] || false
251
- request_options.delete(:auto_generate_object_id_if_not_exist)
252
- if generate_object_id
253
- IndexingResponse.new(self, raw_batch(chunk('addObject', objects), request_options))
254
- else
255
- IndexingResponse.new(self, raw_batch(chunk('updateObject', objects, true), request_options))
256
- end
257
- end
258
-
259
- # Add several objects to the index and wait for operation to complete
260
- #
261
- # @param objects [Array] the objects to save
262
- # @param opts [Hash] contains extra parameters to send with your query
263
- #
264
- # @return [IndexingResponse]
265
- #
266
- def save_objects!(objects, opts = {})
267
- response = save_objects(objects, opts)
268
- response.wait(opts)
269
- end
270
-
271
- # Partially update an object
272
- #
273
- # @param object [String] object ID to partially update
274
- # @param opts [Hash] contains extra parameters to send with your query
275
- #
276
- # @return [IndexingResponse]
277
- #
278
- def partial_update_object(object, opts = {})
279
- partial_update_objects([object], opts)
280
- end
281
-
282
- # Partially update an object and wait for operation to complete
283
- #
284
- # @param object [String] object ID to partially update
285
- # @param opts [Hash] contains extra parameters to send with your query
286
- #
287
- # @return [IndexingResponse]
288
- #
289
- def partial_update_object!(object, opts = {})
290
- response = partial_update_objects([object], opts)
291
- response.wait(opts)
292
- end
293
-
294
- # Partially update several objects
295
- #
296
- # @param objects [Array] array of objectIDs to partially update
297
- # @param opts [Hash] contains extra parameters to send with your query
298
- #
299
- # @return [IndexingResponse]
300
- #
301
- def partial_update_objects(objects, opts = {})
302
- generate_object_id = false
303
- request_options = symbolize_hash(opts)
304
- if get_option(request_options, 'createIfNotExists')
305
- generate_object_id = true
306
- end
307
- request_options.delete(:createIfNotExists)
308
-
309
- if generate_object_id
310
- IndexingResponse.new(self, raw_batch(chunk('partialUpdateObject', objects), request_options))
311
- else
312
- IndexingResponse.new(self, raw_batch(chunk('partialUpdateObjectNoCreate', objects), request_options))
313
- end
314
- end
315
-
316
- # Partially update several objects and wait for operation to complete
317
- #
318
- # @param objects [Array] array of objectIDs to partially update
319
- # @param opts [Hash] contains extra parameters to send with your query
320
- #
321
- # @return [IndexingResponse]
322
- #
323
- def partial_update_objects!(objects, opts = {})
324
- response = partial_update_objects(objects, opts)
325
- response.wait(opts)
326
- end
327
-
328
- # Delete an existing object from an index
329
- #
330
- # @param object_id [String]
331
- # @param opts [Hash] contains extra parameters to send with your query
332
- #
333
- # @return [IndexingResponse]
334
- #
335
- def delete_object(object_id, opts = {})
336
- delete_objects([object_id], opts)
337
- end
338
-
339
- # Delete an existing object from an index and wait for operation to complete
340
- #
341
- # @param object_id [String]
342
- # @param opts [Hash] contains extra parameters to send with your query
343
- #
344
- # @return [IndexingResponse]
345
- #
346
- def delete_object!(object_id, opts = {})
347
- response = delete_objects([object_id], opts)
348
- response.wait(opts)
349
- end
350
-
351
- # Delete several existing objects from an index
352
- #
353
- # @param object_ids [Array]
354
- # @param opts [Hash] contains extra parameters to send with your query
355
- #
356
- # @return [IndexingResponse]
357
- #
358
- def delete_objects(object_ids, opts = {})
359
- objects = object_ids.map do |object_id|
360
- { objectID: object_id }
361
- end
362
-
363
- IndexingResponse.new(self, raw_batch(chunk('deleteObject', objects), opts))
364
- end
365
-
366
- # Delete several existing objects from an index and wait for operation to complete
367
- #
368
- # @param object_ids [Array]
369
- # @param opts [Hash] contains extra parameters to send with your query
370
- #
371
- # @return [IndexingResponse]
372
- #
373
- def delete_objects!(object_ids, opts = {})
374
- response = delete_objects(object_ids, opts)
375
- response.wait(opts)
376
- end
377
-
378
- # Delete all records matching the query
379
- #
380
- # @param filters [Hash]
381
- # @param opts [Hash] contains extra parameters to send with your query
382
- #
383
- # @return [IndexingResponse]
384
- #
385
- def delete_by(filters, opts = {})
386
- response = @transporter.write(:POST, path_encode('/1/indexes/%s/deleteByQuery', @name), filters, opts)
387
-
388
- IndexingResponse.new(self, response)
389
- end
390
-
391
- # Delete all records matching the query and wait for operation to complete
392
- #
393
- # @param filters [Hash]
394
- # @param opts [Hash] contains extra parameters to send with your query
395
- #
396
- # @return [IndexingResponse]
397
- #
398
- def delete_by!(filters, opts = {})
399
- response = delete_by(filters, opts)
400
-
401
- response.wait(opts)
402
- end
403
-
404
- # Send a batch request
405
- #
406
- # @param requests [Hash] hash containing the requests to batch
407
- # @param opts [Hash] contains extra parameters to send with your query
408
- #
409
- # @return [IndexingResponse]
410
- #
411
- def batch(requests, opts = {})
412
- response = raw_batch(requests, opts)
413
-
414
- IndexingResponse.new(self, response)
415
- end
416
-
417
- # Send a batch request and wait for operation to complete
418
- #
419
- # @param requests [Hash] hash containing the requests to batch
420
- # @param opts [Hash] contains extra parameters to send with your query
421
- #
422
- # @return [IndexingResponse]
423
- #
424
- def batch!(requests, opts = {})
425
- response = batch(requests, opts)
426
- response.wait(opts)
427
- end
428
-
429
- # # # # # # # # # # # # # # # # # # # # #
430
- # QUERY RULES
431
- # # # # # # # # # # # # # # # # # # # # #
432
-
433
- # Retrieve the Rule with the specified objectID
434
- #
435
- # @param object_id [String]
436
- # @param opts [Hash] contains extra parameters to send with your query
437
- #
438
- # @return [Hash]
439
- #
440
- def get_rule(object_id, opts = {})
441
- @transporter.read(:GET, path_encode('/1/indexes/%s/rules/%s', @name, object_id), {}, opts)
442
- end
443
-
444
- # Create or update a rule
445
- #
446
- # @param rule [Hash] a hash containing a rule objectID and different conditions/consequences
447
- # @param opts [Hash] contains extra parameters to send with your query
448
- #
449
- # @return [Array, IndexingResponse]
450
- #
451
- def save_rule(rule, opts = {})
452
- save_rules([rule], opts)
453
- end
454
-
455
- # Create or update a rule and wait for operation to complete
456
- #
457
- # @param rule [Hash] a hash containing a rule objectID and different conditions/consequences
458
- # @param opts [Hash] contains extra parameters to send with your query
459
- #
460
- # @return [Array, IndexingResponse]
461
- #
462
- def save_rule!(rule, opts = {})
463
- response = save_rules([rule], opts)
464
- response.wait(opts)
465
- end
466
-
467
- # Create or update rules
468
- #
469
- # @param rules [Array] an array of hashes containing a rule objectID and different conditions/consequences
470
- # @param opts [Hash] contains extra parameters to send with your query
471
- #
472
- # @return [Array, IndexingResponse]
473
- #
474
- def save_rules(rules, opts = {})
475
- if rules.is_a?(RuleIterator)
476
- iterated = []
477
- rules.each do |rule|
478
- iterated.push(rule)
479
- end
480
- rules = iterated
481
- end
482
-
483
- if rules.empty?
484
- return []
485
- end
486
-
487
- forward_to_replicas = false
488
- clear_existing_rules = false
489
- request_options = symbolize_hash(opts)
490
-
491
- if request_options[:forwardToReplicas]
492
- forward_to_replicas = true
493
- request_options.delete(:forwardToReplicas)
494
- end
495
-
496
- if request_options[:clearExistingRules]
497
- clear_existing_rules = true
498
- request_options.delete(:clearExistingRules)
499
- end
500
-
501
- rules.each do |rule|
502
- get_object_id(rule)
503
- end
504
-
505
- response = @transporter.write(:POST, path_encode('/1/indexes/%s/rules/batch', @name) + handle_params({ forwardToReplicas: forward_to_replicas, clearExistingRules: clear_existing_rules }), rules, request_options)
506
-
507
- IndexingResponse.new(self, response)
508
- end
509
-
510
- # Create or update rules and wait for operation to complete
511
- #
512
- # @param rules [Array] an array of hashes containing a rule objectID and different conditions/consequences
513
- # @param opts [Hash] contains extra parameters to send with your query
514
- #
515
- # @return [Array, IndexingResponse]
516
- #
517
- def save_rules!(rules, opts = {})
518
- response = save_rules(rules, opts)
519
- response.wait(opts)
520
- end
521
-
522
- # Delete all Rules in the index
523
- #
524
- # @param opts [Hash] contains extra parameters to send with your query
525
- #
526
- # @return [IndexingResponse]
527
- #
528
- def clear_rules(opts = {})
529
- forward_to_replicas = false
530
- request_options = symbolize_hash(opts)
531
-
532
- if request_options[:forwardToReplicas]
533
- forward_to_replicas = true
534
- request_options.delete(:forwardToReplicas)
535
- end
536
-
537
- response = @transporter.write(:POST, path_encode('1/indexes/%s/rules/clear', @name) + handle_params({ forwardToReplicas: forward_to_replicas }), '', request_options)
538
-
539
- IndexingResponse.new(self, response)
540
- end
541
-
542
- # Delete all Rules in the index and wait for operation to complete
543
- #
544
- # @param opts [Hash] contains extra parameters to send with your query
545
- #
546
- # @return [IndexingResponse]
547
- #
548
- def clear_rules!(opts = {})
549
- response = clear_rules(opts)
550
- response.wait(opts)
551
- end
552
-
553
- # Delete the Rule with the specified objectID
554
- #
555
- # @param object_id [String]
556
- # @param opts [Hash] contains extra parameters to send with your query
557
- #
558
- # @return [IndexingResponse]
559
- #
560
- def delete_rule(object_id, opts = {})
561
- forward_to_replicas = false
562
- request_options = symbolize_hash(opts)
563
-
564
- if request_options[:forwardToReplicas]
565
- forward_to_replicas = true
566
- request_options.delete(:forwardToReplicas)
567
- end
568
-
569
- response = @transporter.write(
570
- :DELETE,
571
- path_encode('1/indexes/%s/rules/%s', @name, object_id) + handle_params({ forwardToReplicas: forward_to_replicas }),
572
- '',
573
- request_options
574
- )
575
-
576
- IndexingResponse.new(self, response)
577
- end
578
-
579
- # Delete the Rule with the specified objectID and wait for operation to complete
580
- #
581
- # @param object_id [String]
582
- # @param opts [Hash] contains extra parameters to send with your query
583
- #
584
- # @return [IndexingResponse]
585
- #
586
- def delete_rule!(object_id, opts = {})
587
- response = delete_rule(object_id, opts)
588
- response.wait(opts)
589
- end
590
-
591
- # # # # # # # # # # # # # # # # # # # # #
592
- # SYNONYMS
593
- # # # # # # # # # # # # # # # # # # # # #
594
-
595
- # Fetch a synonym object identified by its objectID
596
- #
597
- # @param object_id [String]
598
- # @param opts [Hash] contains extra parameters to send with your query
599
- #
600
- # @return [Hash]
601
- #
602
- def get_synonym(object_id, opts = {})
603
- @transporter.read(:GET, path_encode('/1/indexes/%s/synonyms/%s', @name, object_id), {}, opts)
604
- end
605
-
606
- # Create a new synonym object or update the existing synonym object with the given object ID
607
- #
608
- # @param synonym [Hash] Synonym object
609
- # @param opts [Hash] contains extra parameters to send with your query
610
- #
611
- # @return [Array, IndexingResponse]
612
- #
613
- def save_synonym(synonym, opts = {})
614
- save_synonyms([synonym], opts)
615
- end
616
-
617
- # Create a new synonym object or update the existing synonym object with the given object ID
618
- # and wait for operation to finish
619
- #
620
- # @param synonym [Hash] Synonym object
621
- # @param opts [Hash] contains extra parameters to send with your query
622
- #
623
- # @return [Array, IndexingResponse]
624
- #
625
- def save_synonym!(synonym, opts = {})
626
- response = save_synonyms([synonym], opts)
627
- response.wait(opts)
628
- end
629
-
630
- # Create/update multiple synonym objects at once, potentially replacing the entire list of synonyms if
631
- # replaceExistingSynonyms is true
632
- #
633
- # @param synonyms [Array] Array of Synonym objects
634
- # @param opts [Hash] contains extra parameters to send with your query
635
- #
636
- # @return [Array, IndexingResponse]
637
- #
638
- def save_synonyms(synonyms, opts = {})
639
- if synonyms.is_a?(SynonymIterator)
640
- iterated = []
641
- synonyms.each do |synonym|
642
- iterated.push(synonym)
643
- end
644
- synonyms = iterated
645
- end
646
-
647
- if synonyms.empty?
648
- return []
649
- end
650
-
651
- synonyms.each do |synonym|
652
- get_object_id(synonym)
653
- end
654
-
655
- forward_to_replicas = false
656
- replace_existing_synonyms = false
657
-
658
- request_options = symbolize_hash(opts)
659
-
660
- if request_options[:forwardToReplicas]
661
- forward_to_replicas = true
662
- request_options.delete(:forwardToReplicas)
663
- end
664
-
665
- if request_options[:replaceExistingSynonyms]
666
- replace_existing_synonyms = true
667
- request_options.delete(:replaceExistingSynonyms)
668
- end
669
- response = @transporter.write(
670
- :POST,
671
- path_encode('/1/indexes/%s/synonyms/batch', @name) + handle_params({ forwardToReplicas: forward_to_replicas, replaceExistingSynonyms: replace_existing_synonyms }),
672
- synonyms,
673
- request_options
674
- )
675
-
676
- IndexingResponse.new(self, response)
677
- end
678
-
679
- # Create/update multiple synonym objects at once, potentially replacing the entire list of synonyms if
680
- # replaceExistingSynonyms is true and wait for operation to complete
681
- #
682
- # @param synonyms [Array] Array of Synonym objects
683
- # @param opts [Hash] contains extra parameters to send with your query
684
- #
685
- # @return [Array, IndexingResponse]
686
- #
687
- def save_synonyms!(synonyms, opts = {})
688
- response = save_synonyms(synonyms, opts)
689
- response.wait(opts)
690
- end
691
-
692
- # Delete all synonyms from the index
693
- #
694
- # @param opts [Hash] contains extra parameters to send with your query
695
- #
696
- # @return [IndexingResponse]
697
- #
698
- def clear_synonyms(opts = {})
699
- forward_to_replicas = false
700
- request_options = symbolize_hash(opts)
701
-
702
- if request_options[:forwardToReplicas]
703
- forward_to_replicas = true
704
- request_options.delete(:forwardToReplicas)
705
- end
706
- response = @transporter.write(
707
- :POST,
708
- path_encode('1/indexes/%s/synonyms/clear', @name) + handle_params({ forwardToReplicas: forward_to_replicas }),
709
- '',
710
- request_options
711
- )
712
-
713
- IndexingResponse.new(self, response)
714
- end
715
-
716
- # Delete all synonyms from the index and wait for operation to complete
717
- #
718
- # @param opts [Hash] contains extra parameters to send with your query
719
- #
720
- # @return [IndexingResponse]
721
- #
722
- def clear_synonyms!(opts = {})
723
- response = clear_synonyms(opts)
724
- response.wait(opts)
725
- end
726
-
727
- # Delete a single synonyms set, identified by the given objectID
728
- #
729
- # @param opts [Hash] contains extra parameters to send with your query
730
- #
731
- # @return [IndexingResponse]
732
- #
733
- def delete_synonym(object_id, opts = {})
734
- forward_to_replicas = false
735
- request_options = symbolize_hash(opts)
736
-
737
- if request_options[:forwardToReplicas]
738
- forward_to_replicas = true
739
- request_options.delete(:forwardToReplicas)
740
- end
741
- response = @transporter.write(
742
- :DELETE,
743
- path_encode('1/indexes/%s/synonyms/%s', @name, object_id) + handle_params({ forwardToReplicas: forward_to_replicas }),
744
- '',
745
- request_options
746
- )
747
-
748
- IndexingResponse.new(self, response)
749
- end
750
-
751
- # Delete a single synonyms set, identified by the given objectID and wait for operation to complete
752
- #
753
- # @param opts [Hash] contains extra parameters to send with your query
754
- #
755
- # @return [IndexingResponse]
756
- #
757
- def delete_synonym!(object_id, opts = {})
758
- response = delete_synonym(object_id, opts)
759
- response.wait(opts)
760
- end
761
-
762
- # # # # # # # # # # # # # # # # # # # # #
763
- # BROWSING
764
- # # # # # # # # # # # # # # # # # # # # #
765
-
766
- # Browse all index content
767
- #
768
- # @param opts [Hash] contains extra parameters to send with your query
769
- #
770
- # @return [Enumerator, ObjectIterator]
771
- #
772
- def browse_objects(opts = {}, &block)
773
- if block_given?
774
- ObjectIterator.new(@transporter, @name, opts).each(&block)
775
- else
776
- ObjectIterator.new(@transporter, @name, opts)
777
- end
778
- end
779
-
780
- # Browse all rules
781
- #
782
- # @param opts [Hash] contains extra parameters to send with your query
783
- #
784
- # @return [Enumerator, RuleIterator]
785
- #
786
- def browse_rules(opts = {}, &block)
787
- if block_given?
788
- RuleIterator.new(@transporter, @name, opts).each(&block)
789
- else
790
- RuleIterator.new(@transporter, @name, opts)
791
- end
792
- end
793
-
794
- # Browse all synonyms
795
- #
796
- # @param opts [Hash] contains extra parameters to send with your query
797
- #
798
- # @return [Enumerator, SynonymIterator]
799
- #
800
- def browse_synonyms(opts = {}, &block)
801
- if block_given?
802
- SynonymIterator.new(@transporter, @name, opts).each(&block)
803
- else
804
- SynonymIterator.new(@transporter, @name, opts)
805
- end
806
- end
807
-
808
- # # # # # # # # # # # # # # # # # # # # #
809
- # REPLACING
810
- # # # # # # # # # # # # # # # # # # # # #
811
-
812
- # Replace all objects in the index
813
- #
814
- # @param objects [Array] Array of objects
815
- # @param opts [Hash] contains extra parameters to send with your query
816
- #
817
- # @return [Enumerator, SynonymIterator]
818
- #
819
- def replace_all_objects(objects, opts = {})
820
- safe = false
821
- request_options = symbolize_hash(opts)
822
- if request_options[:safe]
823
- safe = true
824
- request_options.delete(:safe)
825
- end
826
-
827
- tmp_index_name = @name + '_tmp_' + rand(10000000).to_s
828
- copy_to_response = copy_to(tmp_index_name, request_options.merge({ scope: %w(settings synonyms rules) }))
829
-
830
- if safe
831
- copy_to_response.wait
832
- end
833
-
834
- # TODO: consider create a new client with state of retry is shared
835
- tmp_client = Algolia::Search::Client.new(@config, { logger: logger })
836
- tmp_index = tmp_client.init_index(tmp_index_name)
837
-
838
- save_objects_response = tmp_index.save_objects(objects, request_options)
839
-
840
- if safe
841
- save_objects_response.wait
842
- end
843
-
844
- move_to_response = tmp_index.move_to(@name)
845
- if safe
846
- move_to_response.wait
847
- end
848
- end
849
-
850
- # Replace all objects in the index and wait for the operation to complete
851
- #
852
- # @param objects [Array] Array of objects
853
- # @param opts [Hash] contains extra parameters to send with your query
854
- #
855
- # @return [Enumerator, SynonymIterator]
856
- #
857
- def replace_all_objects!(objects, opts = {})
858
- replace_all_objects(objects, opts.merge(safe: true))
859
- end
860
-
861
- # Replace all rules in the index
862
- #
863
- # @param rules [Array] Array of rules
864
- # @param opts [Hash] contains extra parameters to send with your query
865
- #
866
- # @return [Array, IndexingResponse]
867
- #
868
- def replace_all_rules(rules, opts = {})
869
- request_options = symbolize_hash(opts)
870
- request_options[:clearExistingRules] = true
871
-
872
- save_rules(rules, request_options)
873
- end
874
-
875
- # Replace all rules in the index and wait for the operation to complete
876
- #
877
- # @param rules [Array] Array of rules
878
- # @param opts [Hash] contains extra parameters to send with your query
879
- #
880
- # @return [Array, IndexingResponse]
881
- #
882
- def replace_all_rules!(rules, opts = {})
883
- request_options = symbolize_hash(opts)
884
- request_options[:clearExistingRules] = true
885
-
886
- save_rules!(rules, request_options)
887
- end
888
-
889
- # Replace all synonyms in the index
890
- #
891
- # @param synonyms [Array] Array of synonyms
892
- # @param opts [Hash] contains extra parameters to send with your query
893
- #
894
- # @return [Array, IndexingResponse]
895
- #
896
- def replace_all_synonyms(synonyms, opts = {})
897
- request_options = symbolize_hash(opts)
898
- request_options[:replaceExistingSynonyms] = true
899
-
900
- save_synonyms(synonyms, request_options)
901
- end
902
-
903
- # Replace all synonyms in the index and wait for the operation to complete
904
- #
905
- # @param synonyms [Array] Array of synonyms
906
- # @param opts [Hash] contains extra parameters to send with your query
907
- #
908
- # @return [Array, IndexingResponse]
909
- #
910
- def replace_all_synonyms!(synonyms, opts = {})
911
- request_options = symbolize_hash(opts)
912
- request_options[:replaceExistingSynonyms] = true
913
-
914
- save_synonyms!(synonyms, request_options)
915
- end
916
-
917
- # # # # # # # # # # # # # # # # # # # # #
918
- # SEARCHING
919
- # # # # # # # # # # # # # # # # # # # # #
920
-
921
- # Perform a search on the index
922
- #
923
- # @param query the full text query
924
- # @param opts [Hash] contains extra parameters to send with your query
925
- #
926
- # @return [Hash]
927
- #
928
- def search(query, opts = {})
929
- @transporter.read(:POST, path_encode('/1/indexes/%s/query', @name), { 'query': query.to_s }, opts)
930
- end
931
-
932
- # Search for values of a given facet, optionally restricting the returned values to those contained
933
- # in objects matching other search criteria
934
- #
935
- # @param facet_name [String]
936
- # @param facet_query [String]
937
- # @param opts [Hash] contains extra parameters to send with your query
938
- #
939
- # @return [Hash]
940
- #
941
- def search_for_facet_values(facet_name, facet_query, opts = {})
942
- @transporter.read(:POST, path_encode('/1/indexes/%s/facets/%s/query', @name, facet_name),
943
- { 'facetQuery': facet_query }, opts)
944
- end
945
-
946
- # Search or browse all synonyms, optionally filtering them by type
947
- #
948
- # @param query [String] Search for specific synonyms matching this string
949
- # @param opts [Hash] contains extra parameters to send with your query
950
- #
951
- # @return [Hash]
952
- #
953
- def search_synonyms(query, opts = {})
954
- @transporter.read(:POST, path_encode('/1/indexes/%s/synonyms/search', @name), { query: query.to_s }, opts)
955
- end
956
-
957
- # Search or browse all rules, optionally filtering them by type
958
- #
959
- # @param query [String] Search for specific rules matching this string
960
- # @param opts [Hash] contains extra parameters to send with your query
961
- #
962
- # @return [Hash]
963
- #
964
- def search_rules(query, opts = {})
965
- @transporter.read(:POST, path_encode('/1/indexes/%s/rules/search', @name), { query: query.to_s }, opts)
966
- end
967
-
968
- # # # # # # # # # # # # # # # # # # # # #
969
- # SETTINGS
970
- # # # # # # # # # # # # # # # # # # # # #
971
-
972
- # Retrieve index settings
973
- #
974
- # @param opts [Hash] contains extra parameters to send with your query
975
- #
976
- # @return [Hash]
977
- #
978
- def get_settings(opts = {})
979
- opts_default = {
980
- getVersion: 2
981
- }
982
- opts = opts_default.merge(opts)
983
- response = @transporter.read(:GET, path_encode('/1/indexes/%s/settings', @name), {}, opts)
984
-
985
- deserialize_settings(response, @config.symbolize_keys)
986
- end
987
-
988
- # Update some index settings. Only specified settings are overridden
989
- #
990
- # @param settings [Hash] the settings to update
991
- # @param opts [Hash] contains extra parameters to send with your query
992
- #
993
- # @return [IndexingResponse]
994
- #
995
- def set_settings(settings, opts = {})
996
- request_options = symbolize_hash(opts)
997
- forward_to_replicas = request_options.delete(:forwardToReplicas) || false
998
-
999
- response = @transporter.write(
1000
- :PUT,
1001
- path_encode('/1/indexes/%s/settings', @name) + handle_params({ forwardToReplicas: forward_to_replicas }),
1002
- settings,
1003
- request_options
1004
- )
1005
-
1006
- IndexingResponse.new(self, response)
1007
- end
1008
-
1009
- # Update some index settings and wait for operation to complete.
1010
- # Only specified settings are overridden
1011
- #
1012
- # @param settings [Hash] the settings to update
1013
- # @param opts [Hash] contains extra parameters to send with your query
1014
- #
1015
- # @return [IndexingResponse]
1016
- #
1017
- def set_settings!(settings, opts = {})
1018
- response = set_settings(settings, opts)
1019
- response.wait(opts)
1020
- end
1021
-
1022
- # # # # # # # # # # # # # # # # # # # # #
1023
- # EXISTS
1024
- # # # # # # # # # # # # # # # # # # # # #
1025
-
1026
- # Checks if the current index exists
1027
- #
1028
- # @return [Boolean]
1029
- #
1030
- def exists
1031
- begin
1032
- get_settings
1033
- rescue AlgoliaHttpError => e
1034
- if e.code == 404
1035
- return false
1036
- end
1037
-
1038
- raise e
1039
- end
1040
- true
1041
- end
1042
-
1043
- #
1044
- # Aliases the exists method
1045
- #
1046
- alias_method :exists?, :exists
1047
-
1048
- # # # # # # # # # # # # # # # # # # # # #
1049
- # PRIVATE
1050
- # # # # # # # # # # # # # # # # # # # # #
1051
-
1052
- private
1053
-
1054
- def raw_batch(requests, opts)
1055
- @transporter.write(:POST, path_encode('/1/indexes/%s/batch', @name), { requests: requests }, opts)
1056
- end
1057
- end
1058
- end
1059
- end