From 06e7db7a1ff08dc25593d58086993001a4f4e2e3 Mon Sep 17 00:00:00 2001 From: funilrys Date: Sat, 12 Nov 2022 18:28:23 +0100 Subject: [PATCH] fixup! Extract the dates out of the dumpv4. --- dump/src/reader/v4/mod.rs | 27 +++++++++++---------------- dump/src/reader/v4/tasks.rs | 27 +++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/dump/src/reader/v4/mod.rs b/dump/src/reader/v4/mod.rs index 5cf7b112d..140890d78 100644 --- a/dump/src/reader/v4/mod.rs +++ b/dump/src/reader/v4/mod.rs @@ -13,7 +13,7 @@ pub mod meta; pub mod settings; pub mod tasks; -use self::meta::{DumpMeta, IndexUuid}; +use self::meta::{DumpMeta, IndexMeta, IndexUuid}; use super::compat::v4_to_v5::CompatV4ToV5; use crate::{Error, IndexMetadata, Result, Version}; @@ -23,8 +23,6 @@ pub type Checked = settings::Checked; pub type Unchecked = settings::Unchecked; pub type Task = tasks::Task; -pub type TaskEvent = tasks::TaskEvent; -pub type TaskContent = tasks::TaskContent; pub type Key = keys::Key; // everything related to the settings @@ -102,6 +100,7 @@ impl V4Reader { V4IndexReader::new( index.uid.clone(), &self.dump.path().join("indexes").join(index.index_meta.uuid.to_string()), + &index.index_meta, BufReader::new(self.tasks.get_ref().try_clone().unwrap()), ) })) @@ -150,7 +149,12 @@ pub struct V4IndexReader { } impl V4IndexReader { - pub fn new(name: String, path: &Path, tasks: BufReader) -> Result { + pub fn new( + name: String, + path: &Path, + index_metadata: &IndexMeta, + tasks: BufReader, + ) -> Result { let meta = File::open(path.join("meta.json"))?; let meta: DumpMeta = serde_json::from_reader(meta)?; @@ -162,23 +166,14 @@ impl V4IndexReader { if task.index_uid.to_string() == name { if updated_at.is_none() { - updated_at = match task.events.last() { - Some(TaskEvent::Created(ts)) => Some(*ts), - _ => None, - }; + updated_at = task.updated_at() } if created_at.is_none() { - created_at = match task.content { - TaskContent::IndexCreation { primary_key } => match task.events.first() { - Some(TaskEvent::Created(ts)) => Some(*ts), - _ => None, - }, - _ => None, - }; + created_at = task.created_at() } - if created_at.is_some() { + if task.id as usize == index_metadata.creation_task_id { break; } } diff --git a/dump/src/reader/v4/tasks.rs b/dump/src/reader/v4/tasks.rs index e1bdde0c7..c075fecc7 100644 --- a/dump/src/reader/v4/tasks.rs +++ b/dump/src/reader/v4/tasks.rs @@ -104,6 +104,33 @@ impl Task { }) } + pub fn updated_at(&self) -> Option { + match self.events.last() { + Some(TaskEvent::Created(ts)) => Some(*ts), + _ => None, + } + } + + pub fn created_at(&self) -> Option { + match &self.content { + TaskContent::IndexCreation { primary_key: _ } => match self.events.first() { + Some(TaskEvent::Created(ts)) => Some(*ts), + _ => None, + }, + TaskContent::DocumentAddition { + content_uuid: _, + merge_strategy: _, + primary_key: _, + documents_count: _, + allow_index_creation: _, + } => match self.events.first() { + Some(TaskEvent::Created(ts)) => Some(*ts), + _ => None, + }, + _ => None, + } + } + /// Return the content_uuid of the `Task` if there is one. pub fn get_content_uuid(&self) -> Option { match self {