get all attrs

main
Ziyang Hu 2 years ago
parent f28049459a
commit 2796af0534

@ -7,6 +7,7 @@ use anyhow::Result;
use rmp_serde::Serializer; use rmp_serde::Serializer;
use serde::Serialize; use serde::Serialize;
use serde_derive::{Deserialize, Serialize}; use serde_derive::{Deserialize, Serialize};
use serde_json::json;
use smallvec::SmallVec; use smallvec::SmallVec;
use std::fmt::{Display, Formatter}; use std::fmt::{Display, Formatter};
@ -288,6 +289,16 @@ impl Attribute {
pub(crate) fn decode(data: &[u8]) -> Result<Self> { pub(crate) fn decode(data: &[u8]) -> Result<Self> {
Ok(rmp_serde::from_slice(data)?) Ok(rmp_serde::from_slice(data)?)
} }
pub(crate) fn to_json(&self) -> serde_json::Value {
json!({
"id": self.id.0,
"keyword": self.keyword.to_string(),
"cardinality": self.cardinality.to_string(),
"type": self.val_type.to_string(),
"index": self.indexing.to_string(),
"history": self.with_history
})
}
} }
#[cfg(test)] #[cfg(test)]

@ -11,4 +11,4 @@ pub(crate) mod transact;
pub(crate) mod utils; pub(crate) mod utils;
pub use data::tx_attr::AttrTxItem; pub use data::tx_attr::AttrTxItem;
pub use runtime::instance::Db; pub use runtime::db::Db;

@ -4,6 +4,7 @@ use crate::runtime::transact::SessionTx;
use crate::AttrTxItem; use crate::AttrTxItem;
use anyhow::Result; use anyhow::Result;
use cozorocks::{DbBuilder, DbIter, RocksDb}; use cozorocks::{DbBuilder, DbIter, RocksDb};
use itertools::Itertools;
use std::fmt::{Debug, Formatter}; use std::fmt::{Debug, Formatter};
use std::sync::atomic::{AtomicU64, AtomicUsize, Ordering}; use std::sync::atomic::{AtomicU64, AtomicUsize, Ordering};
use std::sync::Arc; use std::sync::Arc;
@ -123,4 +124,8 @@ impl Db {
tx.commit_tx(&comment, false)?; tx.commit_tx(&comment, false)?;
Ok(()) Ok(())
} }
pub fn current_schema(&self) -> Result<serde_json::Value> {
let mut tx = self.transact()?;
tx.all_attrs().map_ok(|v| v.to_json()).try_collect()
}
} }

@ -1,2 +1,2 @@
pub(crate) mod instance; pub(crate) mod db;
pub(crate) mod transact; pub(crate) mod transact;

@ -16,6 +16,7 @@ fn test_send_sync<T: Send + Sync>(_: &T) {}
fn creation() { fn creation() {
let db = create_db("_test_db"); let db = create_db("_test_db");
test_send_sync(&db); test_send_sync(&db);
dbg!(db.current_schema().unwrap().to_string());
// let current_validity = Validity::current(); // let current_validity = Validity::current();
// let session = db.new_session().unwrap(); // let session = db.new_session().unwrap();
// let mut tx = session.transact().unwrap(); // let mut tx = session.transact().unwrap();

Loading…
Cancel
Save