Remove transactions

This commit is contained in:
asonix 2023-05-15 13:08:21 -05:00
parent 7d31b34bac
commit acb3aca28e

View file

@ -138,34 +138,18 @@ impl StartInsertState {
&self,
connection: &C,
) -> Result<HashMap<String, u128>, bonsaidb::core::Error> {
// TODO: Batch, don't use transaction
let mut tx = Transaction::new();
// TODO: Batch
let mut strings = HashMap::with_capacity(self.strings.len());
let ordered_strings = self.strings.iter().collect::<Vec<_>>();
for string in &ordered_strings {
crate::schema::LiteralString {
string: (*string).clone(),
for string in &self.strings {
let doc = crate::schema::LiteralString {
string: string.clone(),
}
.push_in_transaction(&mut tx)?;
}
.push_into_async(connection)
.await?;
let strings = tx
.apply_async(connection)
.await?
.iter()
.zip(ordered_strings)
.filter_map(|(operation_result, string)| match operation_result {
bonsaidb::core::transaction::OperationResult::Success => {
eprintln!("Got empty Success, expected DocumentUpdated");
None
}
bonsaidb::core::transaction::OperationResult::DocumentDeleted { .. } => None,
bonsaidb::core::transaction::OperationResult::DocumentUpdated {
header, ..
} => Some((string.clone(), header.id.deserialize::<u128>().ok()?)),
})
.collect();
strings.insert(string.clone(), doc.header.id);
}
Ok(strings)
}
@ -174,34 +158,18 @@ impl StartInsertState {
&self,
connection: &C,
) -> Result<HashMap<langtag::LanguageTagBuf, u128>, bonsaidb::core::Error> {
// TODO: Batch, don't use transaction
let mut tx = Transaction::new();
// TODO: Batch
let mut langtags = HashMap::with_capacity(self.langtags.len());
let ordered_langtags = self.langtags.iter().collect::<Vec<_>>();
for langtag in &ordered_langtags {
crate::schema::LiteralLanguageTag {
langtag: (*langtag).clone().into(),
for langtag in &self.langtags {
let doc = crate::schema::LiteralLanguageTag {
langtag: langtag.clone().into(),
}
.push_in_transaction(&mut tx)?;
}
.push_into_async(connection)
.await?;
let langtags = tx
.apply_async(connection)
.await?
.iter()
.zip(ordered_langtags)
.filter_map(|(operation_result, string)| match operation_result {
bonsaidb::core::transaction::OperationResult::Success => {
eprintln!("Got empty Success, expected DocumentUpdated");
None
}
bonsaidb::core::transaction::OperationResult::DocumentDeleted { .. } => None,
bonsaidb::core::transaction::OperationResult::DocumentUpdated {
header, ..
} => Some((string.clone(), header.id.deserialize::<u128>().ok()?)),
})
.collect();
langtags.insert(langtag.clone(), doc.header.id);
}
Ok(langtags)
}
@ -210,31 +178,16 @@ impl StartInsertState {
&self,
connection: &C,
) -> Result<HashMap<rdf_types::BlankIdBuf, u128>, bonsaidb::core::Error> {
// TODO: Batch, don't use transaction
let mut tx = Transaction::new();
// TODO: Batch
let mut blank_nodes = HashMap::with_capacity(self.blank_nodes.len());
for _ in 0..self.blank_nodes.len() {
crate::schema::BlankId.push_in_transaction(&mut tx)?;
for blank_node in &self.blank_nodes {
let doc = crate::schema::BlankId.push_into_async(connection).await?;
blank_nodes.insert(blank_node.clone(), doc.header.id);
}
let langtags = tx
.apply_async(connection)
.await?
.iter()
.zip(&self.blank_nodes)
.filter_map(|(operation_result, blank_node)| match operation_result {
bonsaidb::core::transaction::OperationResult::Success => {
eprintln!("Got empty Success, expected DocumentUpdated");
None
}
bonsaidb::core::transaction::OperationResult::DocumentDeleted { .. } => None,
bonsaidb::core::transaction::OperationResult::DocumentUpdated {
header, ..
} => Some((blank_node.clone(), header.id.deserialize::<u128>().ok()?)),
})
.collect();
Ok(langtags)
Ok(blank_nodes)
}
}