// 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, deckconf::{DeckConf, DeckConfSchema11}, prelude::*, }; pub(super) use pb::deckconfig_service::Service as DeckConfigService; impl DeckConfigService for Backend { fn add_or_update_deck_config_legacy( &self, input: pb::AddOrUpdateDeckConfigLegacyIn, ) -> Result { let conf: DeckConfSchema11 = serde_json::from_slice(&input.config)?; let mut conf: DeckConf = conf.into(); self.with_col(|col| { col.transact_no_undo(|col| { col.add_or_update_deck_config(&mut conf, input.preserve_usn_and_mtime)?; Ok(pb::DeckConfigId { dcid: conf.id.0 }) }) }) .map(Into::into) } fn all_deck_config_legacy(&self, _input: pb::Empty) -> Result { self.with_col(|col| { let conf: Vec = col .storage .all_deck_config()? .into_iter() .map(Into::into) .collect(); serde_json::to_vec(&conf).map_err(Into::into) }) .map(Into::into) } fn get_deck_config_legacy(&self, input: pb::DeckConfigId) -> Result { self.with_col(|col| { let conf = col.get_deck_config(input.into(), true)?.unwrap(); let conf: DeckConfSchema11 = conf.into(); Ok(serde_json::to_vec(&conf)?) }) .map(Into::into) } fn new_deck_config_legacy(&self, _input: pb::Empty) -> Result { serde_json::to_vec(&DeckConfSchema11::default()) .map_err(Into::into) .map(Into::into) } fn remove_deck_config(&self, input: pb::DeckConfigId) -> Result { self.with_col(|col| col.transact_no_undo(|col| col.remove_deck_config(input.into()))) .map(Into::into) } }