From 2a04ecccc46251109189f0929d50757b9d0bbaf4 Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Wed, 11 Dec 2024 01:43:37 -0500 Subject: [PATCH 01/20] first commit --- crates/meilisearch/src/routes/indexes/settings.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index a9d8d3053..d1e47c201 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -20,6 +20,14 @@ use crate::Opt; #[macro_export] macro_rules! make_setting_route { ($route:literal, $update_verb:ident, $type:ty, $err_ty:ty, $attr:ident, $camelcase_attr:literal, $analytics:ident) => { + #[allow(dead_code)] + + pub fn verify_field_exists(settings: Settings) { + match settings { + Settings { $attr: _, .. } => {} + } + } + pub mod $attr { use actix_web::web::Data; use actix_web::{web, HttpRequest, HttpResponse, Resource}; From c06f386ac38a83d28db3d50411f285fc9d28a758 Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Wed, 11 Dec 2024 09:36:36 -0500 Subject: [PATCH 02/20] specifying generic structure now for verifiy_field_exists --- crates/meilisearch/src/routes/indexes/settings.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index d1e47c201..370fac07e 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -9,6 +9,7 @@ use meilisearch_types::milli::update::Setting; use meilisearch_types::settings::{settings, SecretPolicy, Settings, Unchecked}; use meilisearch_types::tasks::KindWithContent; use tracing::debug; +use meilisearch_types::FieldIdMapReader; use super::settings_analytics::*; use crate::analytics::Analytics; @@ -22,7 +23,7 @@ macro_rules! make_setting_route { ($route:literal, $update_verb:ident, $type:ty, $err_ty:ty, $attr:ident, $camelcase_attr:literal, $analytics:ident) => { #[allow(dead_code)] - pub fn verify_field_exists(settings: Settings) { + pub fn verify_field_exists(settings: Settings) { match settings { Settings { $attr: _, .. } => {} } From 0a0a5f84bfaca9b80fa87e8374095505a9ff3c8f Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Wed, 11 Dec 2024 10:05:08 -0500 Subject: [PATCH 03/20] added attribute name such that each verify_field_exists generated by the macro is unique --- crates/meilisearch/src/routes/indexes/settings.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index 370fac07e..e87961dff 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -9,7 +9,6 @@ use meilisearch_types::milli::update::Setting; use meilisearch_types::settings::{settings, SecretPolicy, Settings, Unchecked}; use meilisearch_types::tasks::KindWithContent; use tracing::debug; -use meilisearch_types::FieldIdMapReader; use super::settings_analytics::*; use crate::analytics::Analytics; @@ -23,7 +22,7 @@ macro_rules! make_setting_route { ($route:literal, $update_verb:ident, $type:ty, $err_ty:ty, $attr:ident, $camelcase_attr:literal, $analytics:ident) => { #[allow(dead_code)] - pub fn verify_field_exists(settings: Settings) { + pub fn verify_field_exists_for_$attr(settings: Settings) { match settings { Settings { $attr: _, .. } => {} } From 262b429a4cdea1200fe7f55c6c19697ffb4f1573 Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Wed, 11 Dec 2024 10:43:13 -0500 Subject: [PATCH 04/20] updated to fix macro error by creating one method to ensure all routes corresponding to fields adn another to ensure each field provided in settings has a corresponding route --- .../src/routes/indexes/settings.rs | 47 ++++++++++++++++--- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index e87961dff..b5c6f9475 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -17,17 +17,37 @@ use crate::extractors::authentication::GuardedData; use crate::routes::{get_task_id, is_dry_run, SummarizedTaskView}; use crate::Opt; +#[allow(dead_code)] +fn verify_all_settings_fields(settings: Settings) { + match settings { + Settings { + filterable_attributes: _, + sortable_attributes: _, + displayed_attributes: _, + searchable_attributes: _, + distinct_attribute: _, + proximity_precision: _, + typo_tolerance: _, + faceting: _, + pagination: _, + stop_words: _, + synonyms: _, + embedders: _, + ranking_rules: _, + search_cutoff_ms: _, + localized_attributes: _, + dictionary: _, + separator_tokens: _, + non_separator_tokens: _, + .. + } => {} + } +} + #[macro_export] macro_rules! make_setting_route { ($route:literal, $update_verb:ident, $type:ty, $err_ty:ty, $attr:ident, $camelcase_attr:literal, $analytics:ident) => { - #[allow(dead_code)] - pub fn verify_field_exists_for_$attr(settings: Settings) { - match settings { - Settings { $attr: _, .. } => {} - } - } - pub mod $attr { use actix_web::web::Data; use actix_web::{web, HttpRequest, HttpResponse, Resource}; @@ -45,6 +65,19 @@ macro_rules! make_setting_route { use $crate::Opt; use $crate::routes::{is_dry_run, get_task_id, SummarizedTaskView}; + #[doc(hidden)] + #[allow(dead_code)] + pub struct VerifySettingExists(std::marker::PhantomData); + #[allow(dead_code)] + impl VerifySettingExists { + const VERIFY: () = { + match None::> { + Some(Settings { $attr: _, .. }) => (), + _ => (), + } + }; + } + pub async fn delete( index_scheduler: GuardedData< ActionPolicy<{ actions::SETTINGS_UPDATE }>, From f4ff722247fb4f9488c27b9a905d007136c79f51 Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Wed, 11 Dec 2024 12:00:39 -0500 Subject: [PATCH 05/20] simplified the method in the macro --- .../src/routes/indexes/settings.rs | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index b5c6f9475..feb48c280 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -18,27 +18,27 @@ use crate::routes::{get_task_id, is_dry_run, SummarizedTaskView}; use crate::Opt; #[allow(dead_code)] -fn verify_all_settings_fields(settings: Settings) { +fn verify_settings_has_routes(settings: Settings) { match settings { Settings { filterable_attributes: _, sortable_attributes: _, displayed_attributes: _, + localized_attributes: _, searchable_attributes: _, distinct_attribute: _, proximity_precision: _, - typo_tolerance: _, - faceting: _, - pagination: _, stop_words: _, - synonyms: _, - embedders: _, - ranking_rules: _, - search_cutoff_ms: _, - localized_attributes: _, - dictionary: _, separator_tokens: _, non_separator_tokens: _, + dictionary: _, + synonyms: _, + ranking_rules: _, + typo_tolerance: _, + pagination: _, + faceting: _, + embedders: _, + search_cutoff_ms: _, .. } => {} } @@ -65,17 +65,11 @@ macro_rules! make_setting_route { use $crate::Opt; use $crate::routes::{is_dry_run, get_task_id, SummarizedTaskView}; - #[doc(hidden)] #[allow(dead_code)] - pub struct VerifySettingExists(std::marker::PhantomData); - #[allow(dead_code)] - impl VerifySettingExists { - const VERIFY: () = { - match None::> { - Some(Settings { $attr: _, .. }) => (), - _ => (), - } - }; + fn verify_setting_exists(settings: meilisearch_types::settings::Settings) { + match settings { + meilisearch_types::settings::Settings { $attr: _, .. } => {} + } } pub async fn delete( From 1a01196a806b0dd80907117a03cddb3edf44da16 Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Wed, 11 Dec 2024 13:06:19 -0500 Subject: [PATCH 06/20] removed the method outside of macro rules, no longer needed --- .../src/routes/indexes/settings.rs | 27 ------------------- 1 file changed, 27 deletions(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index feb48c280..61305241e 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -17,33 +17,6 @@ use crate::extractors::authentication::GuardedData; use crate::routes::{get_task_id, is_dry_run, SummarizedTaskView}; use crate::Opt; -#[allow(dead_code)] -fn verify_settings_has_routes(settings: Settings) { - match settings { - Settings { - filterable_attributes: _, - sortable_attributes: _, - displayed_attributes: _, - localized_attributes: _, - searchable_attributes: _, - distinct_attribute: _, - proximity_precision: _, - stop_words: _, - separator_tokens: _, - non_separator_tokens: _, - dictionary: _, - synonyms: _, - ranking_rules: _, - typo_tolerance: _, - pagination: _, - faceting: _, - embedders: _, - search_cutoff_ms: _, - .. - } => {} - } -} - #[macro_export] macro_rules! make_setting_route { ($route:literal, $update_verb:ident, $type:ty, $err_ty:ty, $attr:ident, $camelcase_attr:literal, $analytics:ident) => { From 9eb4b84abd016e3d0c7951007a761bdb2a6a2d86 Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Mon, 16 Dec 2024 13:23:24 -0500 Subject: [PATCH 07/20] now cheecking to enusre that all the settings in the struct are listed in this macro. --- crates/meilisearch/src/routes/indexes/settings.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index 244eedf67..14734929f 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -65,11 +65,10 @@ macro_rules! make_setting_route { use $crate::routes::{is_dry_run, get_task_id, SummarizedTaskView}; #[allow(dead_code)] - fn verify_setting_exists(settings: meilisearch_types::settings::Settings) { - match settings { - meilisearch_types::settings::Settings { $attr: _, .. } => {} - } - } + const _: () = { + let meilisearch_types::settings::Settings { $attr: _, .. } = + meilisearch_types::settings::Settings::::default(); + }; pub async fn delete( index_scheduler: GuardedData< From f27b33dabe79f73a5eadc950700c8f047b49092d Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Mon, 16 Dec 2024 13:27:57 -0500 Subject: [PATCH 08/20] undid changes from the pull 1.12.0 branch --- .github/workflows/bench-pr.yml | 2 +- .github/workflows/benchmarks-pr.yml | 2 +- BENCHMARKS.md | 21 --------------------- 3 files changed, 2 insertions(+), 23 deletions(-) diff --git a/.github/workflows/bench-pr.yml b/.github/workflows/bench-pr.yml index 632c86d4e..128b513bd 100644 --- a/.github/workflows/bench-pr.yml +++ b/.github/workflows/bench-pr.yml @@ -55,7 +55,7 @@ jobs: reaction-type: "rocket" repo-token: ${{ env.GH_TOKEN }} - - uses: xt0rted/pull-request-comment-branch@v3 + - uses: xt0rted/pull-request-comment-branch@v2 id: comment-branch with: repo_token: ${{ env.GH_TOKEN }} diff --git a/.github/workflows/benchmarks-pr.yml b/.github/workflows/benchmarks-pr.yml index 7c081932a..a083baa3c 100644 --- a/.github/workflows/benchmarks-pr.yml +++ b/.github/workflows/benchmarks-pr.yml @@ -56,7 +56,7 @@ jobs: reaction-type: "eyes" repo-token: ${{ env.GH_TOKEN }} - - uses: xt0rted/pull-request-comment-branch@v3 + - uses: xt0rted/pull-request-comment-branch@v2 id: comment-branch with: repo_token: ${{ env.GH_TOKEN }} diff --git a/BENCHMARKS.md b/BENCHMARKS.md index 6cabb11b5..6d2cc6100 100644 --- a/BENCHMARKS.md +++ b/BENCHMARKS.md @@ -48,27 +48,6 @@ cargo xtask bench --no-dashboard -- workloads/my_workload_1.json workloads/my_wo For processing the results, look at [Looking at benchmark results/Without dashboard](#without-dashboard). -#### Sending a workload by hand - -Sometimes you want to visualize the metrics of a worlkoad that comes from a custom report. -It is not quite easy to trick the benchboard in thinking that your report is legitimate but here are the commands you can run to upload your firefox report on a running benchboard. - -```bash -# Name this hostname whatever you want -echo '{ "hostname": "the-best-place" }' | xh PUT 'http://127.0.0.1:9001/api/v1/machine' - -# You'll receive an UUID from this command that we will call $invocation_uuid -echo '{ "commit": { "sha1": "1234567", "commit_date": "2024-09-05 12:00:12.0 +00:00:00", "message": "A cool message" }, "machine_hostname": "the-best-place", "max_workloads": 1 }' | xh PUT 'http://127.0.0.1:9001/api/v1/invocation' - -# Just use UUID from the previous command -# and you'll receive another UUID that we will call $workload_uuid -echo '{ "invocation_uuid": "$invocation_uuid", "name": "toto", "max_runs": 1 }' | xh PUT 'http://127.0.0.1:9001/api/v1/workload' - -# And now use your $workload_uuid and the content of your firefox report -# but don't forget to convert your firefox report from JSONLines into an object -echo '{ "workload_uuid": "$workload_uuid", "data": $REPORT_JSON_DATA }' | xh PUT 'http://127.0.0.1:9001/api/v1/run' -``` - ### In CI We have dedicated runners to run workloads on CI. Currently, there are three ways of running the CI: From 9c857ff48fa930e00383d405b77b1744a474dfd4 Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:08:22 -0500 Subject: [PATCH 09/20] handling error where multple attributes aren't allowed to be checked, only checking single now since this is being executed in make_setting_route --- crates/meilisearch/src/routes/indexes/settings.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index 14734929f..9a5233844 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -25,6 +25,7 @@ use crate::Opt; /// It also generates a `configure` function that configures the routes for the settings. macro_rules! make_setting_routes { ($({route: $route:literal, update_verb: $update_verb:ident, value_type: $type:ty, err_type: $err_ty:ty, attr: $attr:ident, camelcase_attr: $camelcase_attr:literal, analytics: $analytics:ident},)*) => { + $( make_setting_route!($route, $update_verb, $type, $err_ty, $attr, $camelcase_attr, $analytics); )* @@ -46,7 +47,6 @@ macro_rules! make_setting_routes { #[macro_export] macro_rules! make_setting_route { ($route:literal, $update_verb:ident, $type:ty, $err_ty:ty, $attr:ident, $camelcase_attr:literal, $analytics:ident) => { - pub mod $attr { use actix_web::web::Data; use actix_web::{web, HttpRequest, HttpResponse, Resource}; @@ -65,10 +65,10 @@ macro_rules! make_setting_route { use $crate::routes::{is_dry_run, get_task_id, SummarizedTaskView}; #[allow(dead_code)] - const _: () = { - let meilisearch_types::settings::Settings { $attr: _, .. } = + fn verify_setting_exists() { + let meilisearch_types::settings::Settings { $attr: _, _kind: _, .. } = meilisearch_types::settings::Settings::::default(); - }; + } pub async fn delete( index_scheduler: GuardedData< From a7b2f461cf38ca2ed4691cc1a15b22ddd2dc4706 Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Mon, 16 Dec 2024 18:01:27 -0500 Subject: [PATCH 10/20] fixed the cargo errors that were occuring --- crates/meilisearch/src/routes/indexes/settings.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index 9a5233844..8600b94ef 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -63,10 +63,11 @@ macro_rules! make_setting_route { use $crate::extractors::sequential_extractor::SeqHandler; use $crate::Opt; use $crate::routes::{is_dry_run, get_task_id, SummarizedTaskView}; + use std::marker::PhantomData; #[allow(dead_code)] fn verify_setting_exists() { - let meilisearch_types::settings::Settings { $attr: _, _kind: _, .. } = + let meilisearch_types::settings::Settings { $attr: _, .. } = meilisearch_types::settings::Settings::::default(); } From b39d4e9b50295d0d5904b8a6d18920b42318296e Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Tue, 17 Dec 2024 12:01:06 -0500 Subject: [PATCH 11/20] removed unused import --- crates/meilisearch/src/routes/indexes/settings.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index 8600b94ef..1cae3baf7 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -63,7 +63,6 @@ macro_rules! make_setting_route { use $crate::extractors::sequential_extractor::SeqHandler; use $crate::Opt; use $crate::routes::{is_dry_run, get_task_id, SummarizedTaskView}; - use std::marker::PhantomData; #[allow(dead_code)] fn verify_setting_exists() { From 42648919c772a0d9acb62af013918837e6991480 Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Thu, 19 Dec 2024 10:24:15 -0500 Subject: [PATCH 12/20] updated settings to pass cargo fmt check --- crates/meilisearch/src/routes/indexes/settings.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index 1cae3baf7..129dfc924 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -66,7 +66,7 @@ macro_rules! make_setting_route { #[allow(dead_code)] fn verify_setting_exists() { - let meilisearch_types::settings::Settings { $attr: _, .. } = + let meilisearch_types::settings::Settings { $attr: _, .. } = meilisearch_types::settings::Settings::::default(); } From f75d74a9671f7382fca2a53600ba0851c7742d58 Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Fri, 20 Dec 2024 16:28:30 -0500 Subject: [PATCH 13/20] removed formating issue --- crates/meilisearch/src/routes/indexes/settings.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index 129dfc924..b25b01889 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -82,7 +82,7 @@ macro_rules! make_setting_route { let index_uid = IndexUid::try_from(index_uid.into_inner())?; let new_settings = Settings { $attr: Setting::Reset.into(), ..Default::default() }; - +x let allow_index_creation = index_scheduler.filters().allow_index_creation(&index_uid); From eecf4c53e70a3948c425de3bc5bf21ba0f4483de Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Wed, 8 Jan 2025 15:10:09 -0500 Subject: [PATCH 14/20] updated changes --- crates/meilisearch/src/routes/indexes/settings.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index b25b01889..f8a1e032e 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -25,6 +25,11 @@ use crate::Opt; /// It also generates a `configure` function that configures the routes for the settings. macro_rules! make_setting_routes { ($({route: $route:literal, update_verb: $update_verb:ident, value_type: $type:ty, err_type: $err_ty:ty, attr: $attr:ident, camelcase_attr: $camelcase_attr:literal, analytics: $analytics:ident},)*) => { + #[allow(dead_code)] + fn verify_settings_exhaustive() { + let meilisearch_types::settings::Settings { $($attr: _,)* } = + meilisearch_types::settings::Settings::::default(); + } $( make_setting_route!($route, $update_verb, $type, $err_ty, $attr, $camelcase_attr, $analytics); @@ -64,12 +69,6 @@ macro_rules! make_setting_route { use $crate::Opt; use $crate::routes::{is_dry_run, get_task_id, SummarizedTaskView}; - #[allow(dead_code)] - fn verify_setting_exists() { - let meilisearch_types::settings::Settings { $attr: _, .. } = - meilisearch_types::settings::Settings::::default(); - } - pub async fn delete( index_scheduler: GuardedData< ActionPolicy<{ actions::SETTINGS_UPDATE }>, @@ -82,7 +81,7 @@ macro_rules! make_setting_route { let index_uid = IndexUid::try_from(index_uid.into_inner())?; let new_settings = Settings { $attr: Setting::Reset.into(), ..Default::default() }; -x + let allow_index_creation = index_scheduler.filters().allow_index_creation(&index_uid); From 9837de271de2170940c38400352776b4a0c0d8bf Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Fri, 10 Jan 2025 15:31:45 -0500 Subject: [PATCH 15/20] fixed majority of errors --- crates/meilisearch/src/routes/indexes/settings.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index f8a1e032e..343c72544 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -26,8 +26,8 @@ use crate::Opt; macro_rules! make_setting_routes { ($({route: $route:literal, update_verb: $update_verb:ident, value_type: $type:ty, err_type: $err_ty:ty, attr: $attr:ident, camelcase_attr: $camelcase_attr:literal, analytics: $analytics:ident},)*) => { #[allow(dead_code)] - fn verify_settings_exhaustive() { - let meilisearch_types::settings::Settings { $($attr: _,)* } = + fn verify_settings_exist() { + let meilisearch_types::settings::Settings { $($attr: _,)* .. } = meilisearch_types::settings::Settings::::default(); } From cd181b36c3dd9420acf245e4bc150a8afbff02a9 Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Tue, 14 Jan 2025 17:50:31 -0500 Subject: [PATCH 16/20] all test cases now passing --- crates/meilisearch/src/routes/indexes/settings.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index 343c72544..8e6ffef04 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -26,10 +26,15 @@ use crate::Opt; macro_rules! make_setting_routes { ($({route: $route:literal, update_verb: $update_verb:ident, value_type: $type:ty, err_type: $err_ty:ty, attr: $attr:ident, camelcase_attr: $camelcase_attr:literal, analytics: $analytics:ident},)*) => { #[allow(dead_code)] - fn verify_settings_exist() { - let meilisearch_types::settings::Settings { $($attr: _,)* .. } = - meilisearch_types::settings::Settings::::default(); - } + const _: () = { + #[allow(dead_code)] + const fn __verify_settings_exist() { + let _: fn() = || { + let meilisearch_types::settings::Settings { $($attr: _,)* .. }: + meilisearch_types::settings::Settings; + }; + } + }; $( make_setting_route!($route, $update_verb, $type, $err_ty, $attr, $camelcase_attr, $analytics); From dddb51a9cad08bd87b23e2381e9915ae1b9862f4 Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Wed, 15 Jan 2025 13:30:10 -0500 Subject: [PATCH 17/20] removed trailing whitespace so cargo fmt passes --- crates/meilisearch/src/routes/indexes/settings.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index 8e6ffef04..2dbbabc99 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -30,7 +30,7 @@ macro_rules! make_setting_routes { #[allow(dead_code)] const fn __verify_settings_exist() { let _: fn() = || { - let meilisearch_types::settings::Settings { $($attr: _,)* .. }: + let meilisearch_types::settings::Settings { $($attr: _,)* .. }: meilisearch_types::settings::Settings; }; } From 1fb96d3edb8afe3c9c47b684480dcf371d6db127 Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Wed, 5 Feb 2025 20:37:07 -0500 Subject: [PATCH 18/20] made changes to ensure its not allowing everything through --- .../src/routes/indexes/settings.rs | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index 2dbbabc99..e47208264 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -27,15 +27,24 @@ macro_rules! make_setting_routes { ($({route: $route:literal, update_verb: $update_verb:ident, value_type: $type:ty, err_type: $err_ty:ty, attr: $attr:ident, camelcase_attr: $camelcase_attr:literal, analytics: $analytics:ident},)*) => { #[allow(dead_code)] const _: () = { - #[allow(dead_code)] + // First, verify that all fields in Settings are listed in the macro const fn __verify_settings_exist() { - let _: fn() = || { - let meilisearch_types::settings::Settings { $($attr: _,)* .. }: - meilisearch_types::settings::Settings; + // This pattern match will fail at compile time if any field is missing from the macro + // or if a field exists in the macro but not in Settings + let _: fn(meilisearch_types::settings::Settings) = |s| { + match s { + meilisearch_types::settings::Settings { + $($attr: _,)* + _kind: _, + } => {} + } }; + + // if any field is missing or has the wrong type + let _: fn(meilisearch_types::settings::Settings) = |_| {}; } }; - + $( make_setting_route!($route, $update_verb, $type, $err_ty, $attr, $camelcase_attr, $analytics); )* @@ -56,7 +65,7 @@ macro_rules! make_setting_routes { #[macro_export] macro_rules! make_setting_route { - ($route:literal, $update_verb:ident, $type:ty, $err_ty:ty, $attr:ident, $camelcase_attr:literal, $analytics:ident) => { + ($route:literal, $update_verb:ident, $type:ty, $err_type:ty, $attr:ident, $camelcase_attr:literal, $analytics:ident) => { pub mod $attr { use actix_web::web::Data; use actix_web::{web, HttpRequest, HttpResponse, Resource}; @@ -113,7 +122,7 @@ macro_rules! make_setting_route { Data, >, index_uid: actix_web::web::Path, - body: deserr::actix_web::AwebJson, $err_ty>, + body: deserr::actix_web::AwebJson, $err_type>, req: HttpRequest, opt: web::Data, analytics: web::Data, From 7b4f2aa593cd1810470537eb4b271ff023b2adc9 Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Wed, 5 Feb 2025 22:07:32 -0500 Subject: [PATCH 19/20] updated code --- .../src/routes/indexes/settings.rs | 21 ++++--------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index e47208264..3b1db5758 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -25,23 +25,10 @@ use crate::Opt; /// It also generates a `configure` function that configures the routes for the settings. macro_rules! make_setting_routes { ($({route: $route:literal, update_verb: $update_verb:ident, value_type: $type:ty, err_type: $err_ty:ty, attr: $attr:ident, camelcase_attr: $camelcase_attr:literal, analytics: $analytics:ident},)*) => { - #[allow(dead_code)] - const _: () = { - // First, verify that all fields in Settings are listed in the macro - const fn __verify_settings_exist() { - // This pattern match will fail at compile time if any field is missing from the macro - // or if a field exists in the macro but not in Settings - let _: fn(meilisearch_types::settings::Settings) = |s| { - match s { - meilisearch_types::settings::Settings { - $($attr: _,)* - _kind: _, - } => {} - } - }; - - // if any field is missing or has the wrong type - let _: fn(meilisearch_types::settings::Settings) = |_| {}; + const _: fn(&meilisearch_types::settings::Settings) = |s| { + // This pattern match will fail at compile time if any field in Settings is not listed in the macro + match *s { + meilisearch_types::settings::Settings { $($attr: _,)* _kind: _ } => {} } }; From 33b67b82e1d304782c44549789aa6d3f11e0f864 Mon Sep 17 00:00:00 2001 From: michascant <89426143+MichaScant@users.noreply.github.com> Date: Thu, 6 Feb 2025 09:57:39 -0500 Subject: [PATCH 20/20] fixed rustfmt errors --- crates/meilisearch/src/routes/indexes/settings.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/meilisearch/src/routes/indexes/settings.rs b/crates/meilisearch/src/routes/indexes/settings.rs index 3b1db5758..e91b8882c 100644 --- a/crates/meilisearch/src/routes/indexes/settings.rs +++ b/crates/meilisearch/src/routes/indexes/settings.rs @@ -31,7 +31,6 @@ macro_rules! make_setting_routes { meilisearch_types::settings::Settings { $($attr: _,)* _kind: _ } => {} } }; - $( make_setting_route!($route, $update_verb, $type, $err_ty, $attr, $camelcase_attr, $analytics); )*