From fb48584f68e733eb5d5116cfc5df50d524fe0191 Mon Sep 17 00:00:00 2001 From: mbround18 Date: Tue, 20 Aug 2024 22:58:38 -0700 Subject: [PATCH] Add trap for isPrivate done search and if unpublished dont search' --- .gitignore | 1 + VERSION | 2 +- engine.js | 88 ++++++++++++++++++++++++++++----------------- src/lib.rs | 11 +----- src/page.rs | 11 ------ src/transformers.rs | 16 --------- 6 files changed, 59 insertions(+), 70 deletions(-) delete mode 100644 src/transformers.rs diff --git a/.gitignore b/.gitignore index dad1fa1..27f9787 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ tmp/ +doc.txt # Created by https://www.toptal.com/developers/gitignore/api/rust,intellij,visualstudiocode,python # Edit at https://www.toptal.com/developers/gitignore?templates=rust,intellij,visualstudiocode,python diff --git a/VERSION b/VERSION index 8a9ecc2..7bcd0e3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.1 \ No newline at end of file +0.0.2 \ No newline at end of file diff --git a/engine.js b/engine.js index d0ca200..7e9e8f1 100644 --- a/engine.js +++ b/engine.js @@ -76,6 +76,22 @@ async function getSearchEngine({ return searchEngine; } +function rejectIfIsPrivateAndNotPublished(page, action) { + if (!page.isPublished) { + logger.warn( + `(SEARCH/MEILISEARCH) SKIPPING: Page with path ${page.path} is not published.`, + ); + return Promise.resolve(); + } else if (page.isPrivate) { + logger.warn( + `(SEARCH/MEILISEARCH) SKIPPING: Page with path ${page.path} is private.`, + ); + return Promise.resolve(); + } else { + return action(page); + } +} + module.exports = { /** * ACTIVATE @@ -195,14 +211,16 @@ module.exports = { * @param {Object} page Page to create */ async created(page) { - logger.info( - `(SEARCH/MEILISEARCH) Creating search index for page: ${page.path}`, - ); - const engine = await getSearchEngine(this.config); - await engine.created(page); - logger.info( - `(SEARCH/MEILISEARCH) Search index created for page: ${page.path}`, - ); + await rejectIfIsPrivateAndNotPublished(page, async (page) => { + logger.info( + `(SEARCH/MEILISEARCH) Creating search index for page: ${page.path}`, + ); + const engine = await getSearchEngine(this.config); + await engine.created(page); + logger.info( + `(SEARCH/MEILISEARCH) Search index created for page: ${page.path}`, + ); + }); }, /** * UPDATE @@ -210,14 +228,16 @@ module.exports = { * @param {Object} page Page to update */ async updated(page) { - logger.info( - `(SEARCH/MEILISEARCH) Updating search index for page: ${page.path}`, - ); - const engine = await getSearchEngine(this.config); - await engine.updated(page); - logger.info( - `(SEARCH/MEILISEARCH) Search index updated for page: ${page.path}`, - ); + await rejectIfIsPrivateAndNotPublished(page, async (page) => { + logger.info( + `(SEARCH/MEILISEARCH) Updating search index for page: ${page.path}`, + ); + const engine = await getSearchEngine(this.config); + await engine.updated(page); + logger.info( + `(SEARCH/MEILISEARCH) Search index updated for page: ${page.path}`, + ); + }); }, /** * DELETE @@ -225,14 +245,16 @@ module.exports = { * @param {Object} page Page to delete */ async deleted(page) { - logger.info( - `(SEARCH/MEILISEARCH) Deleting search index for page: ${page.path}`, - ); - const engine = await getSearchEngine(this.config); - await engine.deleted(page); - logger.info( - `(SEARCH/MEILISEARCH) Search index deleted for page: ${page.path}`, - ); + await rejectIfIsPrivateAndNotPublished(page, async (page) => { + logger.info( + `(SEARCH/MEILISEARCH) Deleting search index for page: ${page.path}`, + ); + const engine = await getSearchEngine(this.config); + await engine.deleted(page); + logger.info( + `(SEARCH/MEILISEARCH) Search index deleted for page: ${page.path}`, + ); + }); }, /** * RENAME @@ -240,14 +262,16 @@ module.exports = { * @param {Object} page Page to rename */ async renamed(page) { - logger.info( - `(SEARCH/MEILISEARCH) Renaming search index for page: ${page.path}`, - ); - const engine = await getSearchEngine(this.config); - await engine.updated(page); - logger.info( - `(SEARCH/MEILISEARCH) Search index renamed for page: ${page.destinationPath}`, - ); + await rejectIfIsPrivateAndNotPublished(page, async (page) => { + logger.info( + `(SEARCH/MEILISEARCH) Renaming search index for page: ${page.path}`, + ); + const engine = await getSearchEngine(this.config); + await engine.updated(page); + logger.info( + `(SEARCH/MEILISEARCH) Search index renamed for page: ${page.destinationPath}`, + ); + }); }, /** * REBUILD INDEX diff --git a/src/lib.rs b/src/lib.rs index 464ba61..04303b3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,7 +1,6 @@ mod logger; mod page; mod query; -mod transformers; use crate::page::RenamedWikiPage; use crate::query::{PageSearchResponse, SerializableSearchResult}; @@ -64,15 +63,7 @@ impl WikiSearchEngine { }) })?; - if page.is_published && !page.is_private { - operation(page).await - } else { - log::warn!( - "Skipping operation on unpublished or private page: {}", - page.id - ); - Ok(()) - } + operation(page).await } async fn add_document(&self, page: WikiPage) -> Result<(), JsValue> { diff --git a/src/page.rs b/src/page.rs index 8d3caad..ba5e28d 100644 --- a/src/page.rs +++ b/src/page.rs @@ -1,4 +1,3 @@ -use crate::transformers::{bool_from_int, bool_to_int}; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Debug)] @@ -9,10 +8,6 @@ pub struct WikiPage { pub(crate) hash: String, title: String, description: String, - #[serde(deserialize_with = "bool_from_int", serialize_with = "bool_to_int")] - pub(crate) is_private: bool, - #[serde(deserialize_with = "bool_from_int", serialize_with = "bool_to_int")] - pub(crate) is_published: bool, pub(crate) content: String, content_type: String, created_at: String, @@ -31,8 +26,6 @@ impl From for WikiPage { hash: renamed.destination_hash, title: renamed.title, description: renamed.description, - is_private: renamed.is_private, - is_published: renamed.is_published, content: renamed.content, content_type: renamed.content_type, created_at: renamed.created_at, @@ -53,10 +46,6 @@ pub(crate) struct RenamedWikiPage { hash: String, title: String, description: String, - #[serde(deserialize_with = "bool_from_int", serialize_with = "bool_to_int")] - pub(crate) is_private: bool, - #[serde(deserialize_with = "bool_from_int", serialize_with = "bool_to_int")] - pub(crate) is_published: bool, content: String, content_type: String, created_at: String, diff --git a/src/transformers.rs b/src/transformers.rs deleted file mode 100644 index 17c2234..0000000 --- a/src/transformers.rs +++ /dev/null @@ -1,16 +0,0 @@ -use serde::{Deserialize, Serializer}; - -pub fn bool_from_int<'de, D>(deserializer: D) -> Result -where - D: serde::Deserializer<'de>, -{ - let value = u8::deserialize(deserializer)?; - Ok(value != 0) -} - -pub fn bool_to_int(x: &bool, serializer: S) -> Result -where - S: Serializer, -{ - serializer.serialize_u8(if *x { 1 } else { 0 }) -}