Store the schema in the main index

This commit is contained in:
Clément Renault 2019-10-04 17:23:46 +02:00
parent df2ef8d2e1
commit 88d0d3931c

View File

@ -1,6 +1,7 @@
use std::sync::Arc; use std::sync::Arc;
use std::convert::TryInto; use std::convert::TryInto;
use meilidb_schema::Schema;
use rkv::Value; use rkv::Value;
use crate::{RankedMap, MResult}; use crate::{RankedMap, MResult};
@ -43,6 +44,33 @@ impl Main {
} }
} }
pub fn put_schema(
&self,
writer: &mut rkv::Writer,
schema: &Schema,
) -> MResult<()>
{
let bytes = bincode::serialize(schema)?;
let blob = Value::Blob(&bytes[..]);
self.main.put(writer, SCHEMA_KEY, &blob)?;
Ok(())
}
pub fn schema(
&self,
reader: &impl rkv::Readable,
) -> MResult<Option<Schema>>
{
match self.main.get(reader, SCHEMA_KEY)? {
Some(Value::Blob(bytes)) => {
let schema = bincode::deserialize_from(bytes.as_ref())?;
Ok(Some(schema))
},
Some(value) => panic!("invalid type {:?}", value),
None => Ok(None),
}
}
pub fn put_ranked_map( pub fn put_ranked_map(
&self, &self,
writer: &mut rkv::Writer, writer: &mut rkv::Writer,