use crate::key::database::tb;
use crate::key::database::tb::Tb;
use crate::statements::DefineTableStatement;
#[tokio::test]
#[serial]
async fn table_definitions_can_be_scanned() {
let node_id = Uuid::parse_str("f7b2ba17-90ed-45f9-9aa2-906c6ba0c289").unwrap();
let clock = Arc::new(RwLock::new(SizedClock::Fake(FakeClock::new(Timestamp::default()))));
let test = init(node_id, clock).await.unwrap();
let mut tx = test.db.transaction(Write, Optimistic).await.unwrap();
let namespace = "test_namespace";
let database = "test_database";
let table = "test_table";
let key = Tb::new(namespace, database, table);
let value = DefineTableStatement {
name: Default::default(),
drop: false,
full: false,
id: None,
view: None,
permissions: Default::default(),
changefeed: None,
comment: None,
};
tx.set(&key, &value).await.unwrap();
match tx.scan(tb::prefix(namespace, database)..tb::suffix(namespace, database), 1000).await {
Ok(scan) => {
assert_eq!(scan.len(), 1);
let read = DefineTableStatement::from(&scan[0].1);
assert_eq!(&read, &value);
}
Err(e) => panic!("{:?}", e),
}
tx.commit().await.unwrap();
}
#[tokio::test]
#[serial]
async fn table_definitions_can_be_deleted() {
let node_id = Uuid::parse_str("13c0e650-1710-489e-bb80-f882bce50b56").unwrap();
let clock = Arc::new(RwLock::new(SizedClock::Fake(FakeClock::new(Timestamp::default()))));
let test = init(node_id, clock).await.unwrap();
let mut tx = test.db.transaction(Write, Optimistic).await.unwrap();
let namespace = "test_namespace";
let database = "test_database";
let table = "test_table";
let key = Tb::new(namespace, database, table);
let value = DefineTableStatement {
name: Default::default(),
drop: false,
full: false,
id: None,
view: None,
permissions: Default::default(),
changefeed: None,
comment: None,
};
tx.set(&key, &value).await.unwrap();
tx.del(&key).await.unwrap();
match tx.get(&key).await {
Ok(None) => {}
Ok(Some(o)) => panic!("Should not exist but was {:?}", o),
Err(e) => panic!("Unexpected error on get {:?}", e),
};
tx.commit().await.unwrap();
}