mirror of
https://github.com/meilisearch/meilisearch.git
synced 2024-11-26 12:05:05 +08:00
Merge #669
669: Add method to create a new Index with specific creation dates r=irevoire a=loiclec This functionality is needed to implement the import of dumps correctly. Co-authored-by: Loïc Lecrenier <loic.lecrenier@me.com>
This commit is contained in:
commit
004c09a8e2
@ -138,7 +138,12 @@ pub struct Index {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Index {
|
impl Index {
|
||||||
pub fn new<P: AsRef<Path>>(mut options: heed::EnvOpenOptions, path: P) -> Result<Index> {
|
pub fn new_with_creation_dates<P: AsRef<Path>>(
|
||||||
|
mut options: heed::EnvOpenOptions,
|
||||||
|
path: P,
|
||||||
|
created_at: OffsetDateTime,
|
||||||
|
updated_at: OffsetDateTime,
|
||||||
|
) -> Result<Index> {
|
||||||
use db_name::*;
|
use db_name::*;
|
||||||
|
|
||||||
options.max_dbs(18);
|
options.max_dbs(18);
|
||||||
@ -168,7 +173,7 @@ impl Index {
|
|||||||
env.create_database(Some(FIELD_ID_DOCID_FACET_STRINGS))?;
|
env.create_database(Some(FIELD_ID_DOCID_FACET_STRINGS))?;
|
||||||
let documents = env.create_database(Some(DOCUMENTS))?;
|
let documents = env.create_database(Some(DOCUMENTS))?;
|
||||||
|
|
||||||
Index::initialize_creation_dates(&env, main)?;
|
Index::set_creation_dates(&env, main, created_at, updated_at)?;
|
||||||
|
|
||||||
Ok(Index {
|
Ok(Index {
|
||||||
env,
|
env,
|
||||||
@ -193,21 +198,30 @@ impl Index {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn initialize_creation_dates(env: &heed::Env, main: PolyDatabase) -> heed::Result<()> {
|
pub fn new<P: AsRef<Path>>(options: heed::EnvOpenOptions, path: P) -> Result<Index> {
|
||||||
|
let now = OffsetDateTime::now_utc();
|
||||||
|
Self::new_with_creation_dates(options, path, now.clone(), now)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn set_creation_dates(
|
||||||
|
env: &heed::Env,
|
||||||
|
main: PolyDatabase,
|
||||||
|
created_at: OffsetDateTime,
|
||||||
|
updated_at: OffsetDateTime,
|
||||||
|
) -> heed::Result<()> {
|
||||||
let mut txn = env.write_txn()?;
|
let mut txn = env.write_txn()?;
|
||||||
// The db was just created, we update its metadata with the relevant information.
|
// The db was just created, we update its metadata with the relevant information.
|
||||||
if main.get::<_, Str, SerdeJson<OffsetDateTime>>(&txn, main_key::CREATED_AT_KEY)?.is_none()
|
if main.get::<_, Str, SerdeJson<OffsetDateTime>>(&txn, main_key::CREATED_AT_KEY)?.is_none()
|
||||||
{
|
{
|
||||||
let now = OffsetDateTime::now_utc();
|
|
||||||
main.put::<_, Str, SerdeJson<OffsetDateTime>>(
|
main.put::<_, Str, SerdeJson<OffsetDateTime>>(
|
||||||
&mut txn,
|
&mut txn,
|
||||||
main_key::UPDATED_AT_KEY,
|
main_key::UPDATED_AT_KEY,
|
||||||
&now,
|
&updated_at,
|
||||||
)?;
|
)?;
|
||||||
main.put::<_, Str, SerdeJson<OffsetDateTime>>(
|
main.put::<_, Str, SerdeJson<OffsetDateTime>>(
|
||||||
&mut txn,
|
&mut txn,
|
||||||
main_key::CREATED_AT_KEY,
|
main_key::CREATED_AT_KEY,
|
||||||
&now,
|
&created_at,
|
||||||
)?;
|
)?;
|
||||||
txn.commit()?;
|
txn.commit()?;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user