fix exporting of non-default deck configs
This commit is contained in:
parent
bb2026f3f8
commit
25e4e4c8f6
@ -357,8 +357,9 @@ class DeckManager:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def update_config(self, conf: DeckConfigDict, preserve_usn: bool = False) -> None:
|
def update_config(self, conf: DeckConfigDict, preserve_usn: bool = False) -> None:
|
||||||
|
"preserve_usn is ignored"
|
||||||
conf["id"] = self.col._backend.add_or_update_deck_config_legacy(
|
conf["id"] = self.col._backend.add_or_update_deck_config_legacy(
|
||||||
config=to_json_bytes(conf), preserve_usn_and_mtime=preserve_usn
|
json=to_json_bytes(conf)
|
||||||
)
|
)
|
||||||
|
|
||||||
def add_config(
|
def add_config(
|
||||||
|
@ -230,8 +230,7 @@ service CardRenderingService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
service DeckConfigService {
|
service DeckConfigService {
|
||||||
rpc AddOrUpdateDeckConfigLegacy(AddOrUpdateDeckConfigLegacyIn)
|
rpc AddOrUpdateDeckConfigLegacy(Json) returns (DeckConfigId);
|
||||||
returns (DeckConfigId);
|
|
||||||
rpc GetDeckConfig(DeckConfigId) returns (DeckConfig);
|
rpc GetDeckConfig(DeckConfigId) returns (DeckConfig);
|
||||||
rpc AllDeckConfigLegacy(Empty) returns (Json);
|
rpc AllDeckConfigLegacy(Empty) returns (Json);
|
||||||
rpc GetDeckConfigLegacy(DeckConfigId) returns (Json);
|
rpc GetDeckConfigLegacy(DeckConfigId) returns (Json);
|
||||||
@ -928,11 +927,6 @@ message CloseCollectionIn {
|
|||||||
bool downgrade_to_schema11 = 1;
|
bool downgrade_to_schema11 = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
message AddOrUpdateDeckConfigLegacyIn {
|
|
||||||
bytes config = 1;
|
|
||||||
bool preserve_usn_and_mtime = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
message DeckConfigsForUpdate {
|
message DeckConfigsForUpdate {
|
||||||
message ConfigWithExtra {
|
message ConfigWithExtra {
|
||||||
DeckConfig config = 1;
|
DeckConfig config = 1;
|
||||||
|
@ -10,15 +10,12 @@ use crate::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
impl DeckConfigService for Backend {
|
impl DeckConfigService for Backend {
|
||||||
fn add_or_update_deck_config_legacy(
|
fn add_or_update_deck_config_legacy(&self, input: pb::Json) -> Result<pb::DeckConfigId> {
|
||||||
&self,
|
let conf: DeckConfSchema11 = serde_json::from_slice(&input.json)?;
|
||||||
input: pb::AddOrUpdateDeckConfigLegacyIn,
|
|
||||||
) -> Result<pb::DeckConfigId> {
|
|
||||||
let conf: DeckConfSchema11 = serde_json::from_slice(&input.config)?;
|
|
||||||
let mut conf: DeckConfig = conf.into();
|
let mut conf: DeckConfig = conf.into();
|
||||||
self.with_col(|col| {
|
self.with_col(|col| {
|
||||||
col.transact_no_undo(|col| {
|
col.transact_no_undo(|col| {
|
||||||
col.add_or_update_deck_config(&mut conf, input.preserve_usn_and_mtime)?;
|
col.add_or_update_deck_config_legacy(&mut conf)?;
|
||||||
Ok(pb::DeckConfigId { dcid: conf.id.0 })
|
Ok(pb::DeckConfigId { dcid: conf.id.0 })
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -111,16 +111,8 @@ impl Collection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Collection {
|
impl Collection {
|
||||||
pub(crate) fn add_or_update_deck_config(
|
pub(crate) fn add_or_update_deck_config(&mut self, config: &mut DeckConfig) -> Result<()> {
|
||||||
&mut self,
|
let usn = Some(self.usn()?);
|
||||||
config: &mut DeckConfig,
|
|
||||||
preserve_usn_and_mtime: bool,
|
|
||||||
) -> Result<()> {
|
|
||||||
let usn = if preserve_usn_and_mtime {
|
|
||||||
None
|
|
||||||
} else {
|
|
||||||
Some(self.usn()?)
|
|
||||||
};
|
|
||||||
|
|
||||||
if config.id.0 == 0 {
|
if config.id.0 == 0 {
|
||||||
self.add_deck_config_inner(config, usn)
|
self.add_deck_config_inner(config, usn)
|
||||||
@ -133,6 +125,23 @@ impl Collection {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Used by the old import code; if provided id is non-zero, will add
|
||||||
|
/// instead of ignoring. Does not support undo.
|
||||||
|
pub(crate) fn add_or_update_deck_config_legacy(
|
||||||
|
&mut self,
|
||||||
|
config: &mut DeckConfig,
|
||||||
|
) -> Result<()> {
|
||||||
|
let usn = Some(self.usn()?);
|
||||||
|
|
||||||
|
if config.id.0 == 0 {
|
||||||
|
self.add_deck_config_inner(config, usn)
|
||||||
|
} else {
|
||||||
|
config.set_modified(usn.unwrap());
|
||||||
|
self.storage
|
||||||
|
.add_or_update_deck_config_with_existing_id(config)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Assigns an id and adds to DB. If usn is provided, modification time and
|
/// Assigns an id and adds to DB. If usn is provided, modification time and
|
||||||
/// usn will be updated.
|
/// usn will be updated.
|
||||||
pub(crate) fn add_deck_config_inner(
|
pub(crate) fn add_deck_config_inner(
|
||||||
|
@ -121,7 +121,7 @@ impl Collection {
|
|||||||
|
|
||||||
// add/update provided configs
|
// add/update provided configs
|
||||||
for conf in &mut input.configs {
|
for conf in &mut input.configs {
|
||||||
self.add_or_update_deck_config(conf, false)?;
|
self.add_or_update_deck_config(conf)?;
|
||||||
configs_after_update.insert(conf.id, conf.clone());
|
configs_after_update.insert(conf.id, conf.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -428,7 +428,7 @@ mod test {
|
|||||||
// set the limit to 4, which should mean 3 are left
|
// set the limit to 4, which should mean 3 are left
|
||||||
let mut conf = col.get_deck_config(DeckConfigId(1), false)?.unwrap();
|
let mut conf = col.get_deck_config(DeckConfigId(1), false)?.unwrap();
|
||||||
conf.inner.new_per_day = 4;
|
conf.inner.new_per_day = 4;
|
||||||
col.add_or_update_deck_config(&mut conf, false)?;
|
col.add_or_update_deck_config(&mut conf)?;
|
||||||
|
|
||||||
let tree = col.deck_tree(Some(TimestampSecs::now()), None)?;
|
let tree = col.deck_tree(Some(TimestampSecs::now()), None)?;
|
||||||
assert_eq!(tree.children[0].new_count, 3);
|
assert_eq!(tree.children[0].new_count, 3);
|
||||||
|
@ -1378,7 +1378,7 @@ mod test {
|
|||||||
name: "new dconf".into(),
|
name: "new dconf".into(),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
col1.add_or_update_deck_config(&mut dconf, false)?;
|
col1.add_or_update_deck_config(&mut dconf)?;
|
||||||
if let DeckKind::Normal(deck) = &mut deck.kind {
|
if let DeckKind::Normal(deck) = &mut deck.kind {
|
||||||
deck.config_id = dconf.id.0;
|
deck.config_id = dconf.id.0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user