fixup! Extract the dates out of the dumpv4.

This commit is contained in:
funilrys 2022-11-12 18:28:23 +01:00
parent 953b2ec438
commit 06e7db7a1f
No known key found for this signature in database
GPG Key ID: 0D8BFEF5515C00C6
2 changed files with 38 additions and 16 deletions

View File

@ -13,7 +13,7 @@ pub mod meta;
pub mod settings; pub mod settings;
pub mod tasks; pub mod tasks;
use self::meta::{DumpMeta, IndexUuid}; use self::meta::{DumpMeta, IndexMeta, IndexUuid};
use super::compat::v4_to_v5::CompatV4ToV5; use super::compat::v4_to_v5::CompatV4ToV5;
use crate::{Error, IndexMetadata, Result, Version}; use crate::{Error, IndexMetadata, Result, Version};
@ -23,8 +23,6 @@ pub type Checked = settings::Checked;
pub type Unchecked = settings::Unchecked; pub type Unchecked = settings::Unchecked;
pub type Task = tasks::Task; pub type Task = tasks::Task;
pub type TaskEvent = tasks::TaskEvent;
pub type TaskContent = tasks::TaskContent;
pub type Key = keys::Key; pub type Key = keys::Key;
// everything related to the settings // everything related to the settings
@ -102,6 +100,7 @@ impl V4Reader {
V4IndexReader::new( V4IndexReader::new(
index.uid.clone(), index.uid.clone(),
&self.dump.path().join("indexes").join(index.index_meta.uuid.to_string()), &self.dump.path().join("indexes").join(index.index_meta.uuid.to_string()),
&index.index_meta,
BufReader::new(self.tasks.get_ref().try_clone().unwrap()), BufReader::new(self.tasks.get_ref().try_clone().unwrap()),
) )
})) }))
@ -150,7 +149,12 @@ pub struct V4IndexReader {
} }
impl V4IndexReader { impl V4IndexReader {
pub fn new(name: String, path: &Path, tasks: BufReader<File>) -> Result<Self> { pub fn new(
name: String,
path: &Path,
index_metadata: &IndexMeta,
tasks: BufReader<File>,
) -> Result<Self> {
let meta = File::open(path.join("meta.json"))?; let meta = File::open(path.join("meta.json"))?;
let meta: DumpMeta = serde_json::from_reader(meta)?; let meta: DumpMeta = serde_json::from_reader(meta)?;
@ -162,23 +166,14 @@ impl V4IndexReader {
if task.index_uid.to_string() == name { if task.index_uid.to_string() == name {
if updated_at.is_none() { if updated_at.is_none() {
updated_at = match task.events.last() { updated_at = task.updated_at()
Some(TaskEvent::Created(ts)) => Some(*ts),
_ => None,
};
} }
if created_at.is_none() { if created_at.is_none() {
created_at = match task.content { created_at = task.created_at()
TaskContent::IndexCreation { primary_key } => match task.events.first() {
Some(TaskEvent::Created(ts)) => Some(*ts),
_ => None,
},
_ => None,
};
} }
if created_at.is_some() { if task.id as usize == index_metadata.creation_task_id {
break; break;
} }
} }

View File

@ -104,6 +104,33 @@ impl Task {
}) })
} }
pub fn updated_at(&self) -> Option<OffsetDateTime> {
match self.events.last() {
Some(TaskEvent::Created(ts)) => Some(*ts),
_ => None,
}
}
pub fn created_at(&self) -> Option<OffsetDateTime> {
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. /// Return the content_uuid of the `Task` if there is one.
pub fn get_content_uuid(&self) -> Option<Uuid> { pub fn get_content_uuid(&self) -> Option<Uuid> {
match self { match self {