From 7425aa6b5883e964851ff7158acf96c4481f6ef0 Mon Sep 17 00:00:00 2001 From: RumovZ Date: Sat, 20 Mar 2021 17:20:49 +0100 Subject: [PATCH] Refactor search/browser.rs to browser_rows.rs --- rslib/backend.proto | 6 ++- rslib/src/backend/browser_rows.rs | 46 +++++++++++++++++++ rslib/src/backend/mod.rs | 5 ++ rslib/src/backend/search.rs | 43 +---------------- .../{search/browser.rs => browser_rows.rs} | 0 rslib/src/lib.rs | 1 + rslib/src/search/mod.rs | 1 - 7 files changed, 59 insertions(+), 43 deletions(-) create mode 100644 rslib/src/backend/browser_rows.rs rename rslib/src/{search/browser.rs => browser_rows.rs} (100%) diff --git a/rslib/backend.proto b/rslib/backend.proto index 00e2c6671..bc754c581 100644 --- a/rslib/backend.proto +++ b/rslib/backend.proto @@ -103,6 +103,7 @@ enum ServiceIndex { SERVICE_INDEX_I18N = 12; SERVICE_INDEX_COLLECTION = 13; SERVICE_INDEX_CARDS = 14; + SERVICE_INDEX_BROWSER_ROWS = 15; } service SchedulingService { @@ -234,7 +235,6 @@ service SearchService { rpc JoinSearchNodes(JoinSearchNodesIn) returns (String); rpc ReplaceSearchNode(ReplaceSearchNodeIn) returns (String); rpc FindAndReplace(FindAndReplaceIn) returns (OpChangesWithCount); - rpc BrowserRowForCard(CardID) returns (BrowserRow); } service StatsService { @@ -277,6 +277,10 @@ service CardsService { rpc SetFlag(SetFlagIn) returns (OpChanges); } +service BrowserRowsService { + rpc BrowserRowForCard(CardID) returns (BrowserRow); +} + // Protobuf stored in .anki2 files // These should be moved to a separate file in the future /////////////////////////////////////////////////////////// diff --git a/rslib/src/backend/browser_rows.rs b/rslib/src/backend/browser_rows.rs new file mode 100644 index 000000000..3c88c1398 --- /dev/null +++ b/rslib/src/backend/browser_rows.rs @@ -0,0 +1,46 @@ +// Copyright: Ankitects Pty Ltd and contributors +// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html + +use super::Backend; +use crate::{backend_proto as pb, browser_rows, prelude::*}; +pub(super) use pb::browserrows_service::Service as BrowserRowsService; + +impl BrowserRowsService for Backend { + fn browser_row_for_card(&self, input: pb::CardId) -> Result { + self.with_col(|col| col.browser_row_for_card(input.cid.into()).map(Into::into)) + } +} + +impl From for pb::BrowserRow { + fn from(row: browser_rows::Row) -> Self { + pb::BrowserRow { + cells: row.cells.into_iter().map(Into::into).collect(), + color: row.color.into(), + font_name: row.font.name, + font_size: row.font.size, + } + } +} + +impl From for pb::browser_row::Cell { + fn from(cell: browser_rows::Cell) -> Self { + pb::browser_row::Cell { + text: cell.text, + is_rtl: cell.is_rtl, + } + } +} + +impl From for i32 { + fn from(color: browser_rows::RowColor) -> Self { + match color { + browser_rows::RowColor::Default => pb::browser_row::Color::Default as i32, + browser_rows::RowColor::Marked => pb::browser_row::Color::Marked as i32, + browser_rows::RowColor::Suspended => pb::browser_row::Color::Suspended as i32, + browser_rows::RowColor::FlagRed => pb::browser_row::Color::FlagRed as i32, + browser_rows::RowColor::FlagOrange => pb::browser_row::Color::FlagOrange as i32, + browser_rows::RowColor::FlagGreen => pb::browser_row::Color::FlagGreen as i32, + browser_rows::RowColor::FlagBlue => pb::browser_row::Color::FlagBlue as i32, + } + } +} diff --git a/rslib/src/backend/mod.rs b/rslib/src/backend/mod.rs index 7c1521260..aacdbc8d1 100644 --- a/rslib/src/backend/mod.rs +++ b/rslib/src/backend/mod.rs @@ -2,6 +2,7 @@ // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html mod adding; +mod browser_rows; mod card; mod cardrendering; mod collection; @@ -24,6 +25,7 @@ mod sync; mod tags; use self::{ + browser_rows::BrowserRowsService, card::CardsService, cardrendering::CardRenderingService, collection::CollectionService, @@ -137,6 +139,9 @@ impl Backend { pb::ServiceIndex::I18n => I18nService::run_method(self, method, input), pb::ServiceIndex::Collection => CollectionService::run_method(self, method, input), pb::ServiceIndex::Cards => CardsService::run_method(self, method, input), + pb::ServiceIndex::BrowserRows => { + BrowserRowsService::run_method(self, method, input) + } }) .map_err(|err| { let backend_err = anki_error_to_proto_error(err, &self.i18n); diff --git a/rslib/src/backend/search.rs b/rslib/src/backend/search.rs index b6ffde8e1..ed4c7d497 100644 --- a/rslib/src/backend/search.rs +++ b/rslib/src/backend/search.rs @@ -13,9 +13,8 @@ use crate::{ config::SortKind, prelude::*, search::{ - browser, concatenate_searches, parse_search, replace_search_node, write_nodes, - BoolSeparator, Node, PropertyKind, RatingKind, SearchNode, SortMode, StateKind, - TemplateKind, + concatenate_searches, parse_search, replace_search_node, write_nodes, BoolSeparator, Node, + PropertyKind, RatingKind, SearchNode, SortMode, StateKind, TemplateKind, }, text::escape_anki_wildcards, }; @@ -90,10 +89,6 @@ impl SearchService for Backend { .map(Into::into) }) } - - fn browser_row_for_card(&self, input: pb::CardId) -> Result { - self.with_col(|col| col.browser_row_for_card(input.cid.into()).map(Into::into)) - } } impl TryFrom for Node { @@ -269,37 +264,3 @@ impl From> for SortMode { } } } - -impl From for pb::BrowserRow { - fn from(row: browser::Row) -> Self { - pb::BrowserRow { - cells: row.cells.into_iter().map(Into::into).collect(), - color: row.color.into(), - font_name: row.font.name, - font_size: row.font.size, - } - } -} - -impl From for pb::browser_row::Cell { - fn from(cell: browser::Cell) -> Self { - pb::browser_row::Cell { - text: cell.text, - is_rtl: cell.is_rtl, - } - } -} - -impl From for i32 { - fn from(color: browser::RowColor) -> Self { - match color { - browser::RowColor::Default => pb::browser_row::Color::Default as i32, - browser::RowColor::Marked => pb::browser_row::Color::Marked as i32, - browser::RowColor::Suspended => pb::browser_row::Color::Suspended as i32, - browser::RowColor::FlagRed => pb::browser_row::Color::FlagRed as i32, - browser::RowColor::FlagOrange => pb::browser_row::Color::FlagOrange as i32, - browser::RowColor::FlagGreen => pb::browser_row::Color::FlagGreen as i32, - browser::RowColor::FlagBlue => pb::browser_row::Color::FlagBlue as i32, - } - } -} diff --git a/rslib/src/search/browser.rs b/rslib/src/browser_rows.rs similarity index 100% rename from rslib/src/search/browser.rs rename to rslib/src/browser_rows.rs diff --git a/rslib/src/lib.rs b/rslib/src/lib.rs index bcbf847f2..8994c8b7b 100644 --- a/rslib/src/lib.rs +++ b/rslib/src/lib.rs @@ -6,6 +6,7 @@ pub mod adding; pub mod backend; mod backend_proto; +pub mod browser_rows; pub mod card; pub mod cloze; pub mod collection; diff --git a/rslib/src/search/mod.rs b/rslib/src/search/mod.rs index fa929cfe8..b469542df 100644 --- a/rslib/src/search/mod.rs +++ b/rslib/src/search/mod.rs @@ -1,7 +1,6 @@ // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html -pub mod browser; mod cards; mod notes; mod parser;