mirror of
https://github.com/meilisearch/meilisearch.git
synced 2024-11-30 09:04:59 +08:00
Enable create_raw_index(...) to specify time
This commit is contained in:
parent
660be071b5
commit
d3eb8d2d5c
@ -788,7 +788,7 @@ impl IndexScheduler {
|
|||||||
let index = if must_create_index {
|
let index = if must_create_index {
|
||||||
// create the index if it doesn't already exist
|
// create the index if it doesn't already exist
|
||||||
let wtxn = self.env.write_txn()?;
|
let wtxn = self.env.write_txn()?;
|
||||||
self.index_mapper.create_index(wtxn, index_uid)?
|
self.index_mapper.create_index(wtxn, index_uid, None, None)?
|
||||||
} else {
|
} else {
|
||||||
let rtxn = self.env.read_txn()?;
|
let rtxn = self.env.read_txn()?;
|
||||||
self.index_mapper.index(&rtxn, index_uid)?
|
self.index_mapper.index(&rtxn, index_uid)?
|
||||||
@ -805,7 +805,7 @@ impl IndexScheduler {
|
|||||||
if self.index_mapper.exists(&wtxn, &index_uid)? {
|
if self.index_mapper.exists(&wtxn, &index_uid)? {
|
||||||
return Err(Error::IndexAlreadyExists(index_uid));
|
return Err(Error::IndexAlreadyExists(index_uid));
|
||||||
}
|
}
|
||||||
self.index_mapper.create_index(wtxn, &index_uid)?;
|
self.index_mapper.create_index(wtxn, &index_uid, None, None)?;
|
||||||
|
|
||||||
self.process_batch(Batch::IndexUpdate { index_uid, primary_key, task })
|
self.process_batch(Batch::IndexUpdate { index_uid, primary_key, task })
|
||||||
}
|
}
|
||||||
|
@ -66,15 +66,30 @@ impl IndexMapper {
|
|||||||
|
|
||||||
/// Create or open an index in the specified path.
|
/// Create or open an index in the specified path.
|
||||||
/// The path *must* exists or an error will be thrown.
|
/// The path *must* exists or an error will be thrown.
|
||||||
fn create_or_open_index(&self, path: &Path) -> Result<Index> {
|
fn create_or_open_index(&self, path: &Path, created: Option<time::OffsetDateTime>, updated: Option<time::OffsetDateTime>) -> Result<Index> {
|
||||||
let mut options = EnvOpenOptions::new();
|
let mut options = EnvOpenOptions::new();
|
||||||
options.map_size(clamp_to_page_size(self.index_size));
|
options.map_size(clamp_to_page_size(self.index_size));
|
||||||
options.max_readers(1024);
|
options.max_readers(1024);
|
||||||
Ok(Index::new(options, path)?)
|
|
||||||
|
let created_at;
|
||||||
|
if created == None {
|
||||||
|
created_at = time::OffsetDateTime::now_utc();
|
||||||
|
} else {
|
||||||
|
created_at = created.unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
let updated_at;
|
||||||
|
if updated == None {
|
||||||
|
updated_at = time::OffsetDateTime::now_utc();
|
||||||
|
} else {
|
||||||
|
updated_at = updated.unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(Index::new_with_creation_dates(options, path, created_at, updated_at)?)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get or create the index.
|
/// Get or create the index.
|
||||||
pub fn create_index(&self, mut wtxn: RwTxn, name: &str) -> Result<Index> {
|
pub fn create_index(&self, mut wtxn: RwTxn, name: &str, created_at: Option<time::OffsetDateTime>, updated_at: Option<time::OffsetDateTime>) -> Result<Index> {
|
||||||
match self.index(&wtxn, name) {
|
match self.index(&wtxn, name) {
|
||||||
Ok(index) => {
|
Ok(index) => {
|
||||||
wtxn.commit()?;
|
wtxn.commit()?;
|
||||||
@ -86,7 +101,10 @@ impl IndexMapper {
|
|||||||
|
|
||||||
let index_path = self.base_path.join(uuid.to_string());
|
let index_path = self.base_path.join(uuid.to_string());
|
||||||
fs::create_dir_all(&index_path)?;
|
fs::create_dir_all(&index_path)?;
|
||||||
let index = self.create_or_open_index(&index_path)?;
|
|
||||||
|
//let created_at = Some(time::OffsetDateTime::now_utc());
|
||||||
|
//let updated_at = Some(time::OffsetDateTime::now_utc());
|
||||||
|
let index = self.create_or_open_index(&index_path, created_at, updated_at)?;
|
||||||
|
|
||||||
wtxn.commit()?;
|
wtxn.commit()?;
|
||||||
// TODO: it would be better to lazily create the index. But we need an Index::open function for milli.
|
// TODO: it would be better to lazily create the index. But we need an Index::open function for milli.
|
||||||
@ -179,7 +197,10 @@ impl IndexMapper {
|
|||||||
match index_map.entry(uuid) {
|
match index_map.entry(uuid) {
|
||||||
Entry::Vacant(entry) => {
|
Entry::Vacant(entry) => {
|
||||||
let index_path = self.base_path.join(uuid.to_string());
|
let index_path = self.base_path.join(uuid.to_string());
|
||||||
let index = self.create_or_open_index(&index_path)?;
|
|
||||||
|
let created_at = Some(time::OffsetDateTime::now_utc());
|
||||||
|
let updated_at = Some(time::OffsetDateTime::now_utc());
|
||||||
|
let index = self.create_or_open_index(&index_path, created_at, updated_at)?;
|
||||||
entry.insert(Available(index.clone()));
|
entry.insert(Available(index.clone()));
|
||||||
index
|
index
|
||||||
}
|
}
|
||||||
|
@ -867,7 +867,9 @@ impl IndexScheduler {
|
|||||||
/// Create a new index without any associated task.
|
/// Create a new index without any associated task.
|
||||||
pub fn create_raw_index(&self, name: &str) -> Result<Index> {
|
pub fn create_raw_index(&self, name: &str) -> Result<Index> {
|
||||||
let wtxn = self.env.write_txn()?;
|
let wtxn = self.env.write_txn()?;
|
||||||
let index = self.index_mapper.create_index(wtxn, name)?;
|
let created_at = Some(time::OffsetDateTime::now_utc());
|
||||||
|
let updated_at = Some(time::OffsetDateTime::now_utc());
|
||||||
|
let index = self.index_mapper.create_index(wtxn, name, created_at, updated_at)?;
|
||||||
|
|
||||||
Ok(index)
|
Ok(index)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user