mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-09 12:49:23 +00:00
Add a dedicated db crate with a basic DB trait
It's needed by the processor and tributary (coordinator).
This commit is contained in:
@@ -7,11 +7,13 @@ use frost::{Participant, ThresholdKeys};
|
||||
|
||||
use tokio::time::timeout;
|
||||
|
||||
use serai_db::MemDb;
|
||||
|
||||
use crate::{
|
||||
Plan, Db,
|
||||
coins::{OutputType, Output, Block, Coin},
|
||||
scanner::{ScannerEvent, Scanner, ScannerHandle},
|
||||
tests::{util::db::MemDb, sign},
|
||||
tests::sign,
|
||||
};
|
||||
|
||||
async fn spend<C: Coin, D: Db>(
|
||||
|
||||
@@ -7,6 +7,8 @@ use rand_core::{RngCore, OsRng};
|
||||
use group::GroupEncoding;
|
||||
use frost::{Participant, ThresholdParams, tests::clone_without};
|
||||
|
||||
use serai_db::MemDb;
|
||||
|
||||
use serai_client::{
|
||||
primitives::{MONERO_NET_ID, BlockHash},
|
||||
validator_sets::primitives::{Session, ValidatorSet},
|
||||
@@ -16,7 +18,6 @@ use messages::{SubstrateContext, key_gen::*};
|
||||
use crate::{
|
||||
coins::Coin,
|
||||
key_gen::{KeyGenEvent, KeyGen},
|
||||
tests::util::db::MemDb,
|
||||
};
|
||||
|
||||
const ID: KeyGenId =
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
pub(crate) mod util;
|
||||
|
||||
mod key_gen;
|
||||
pub(crate) use key_gen::test_key_gen;
|
||||
|
||||
|
||||
@@ -7,10 +7,11 @@ use frost::Participant;
|
||||
|
||||
use tokio::time::timeout;
|
||||
|
||||
use serai_db::MemDb;
|
||||
|
||||
use crate::{
|
||||
coins::{OutputType, Output, Block, Coin},
|
||||
scanner::{ScannerEvent, Scanner, ScannerHandle},
|
||||
tests::util::db::MemDb,
|
||||
};
|
||||
|
||||
pub async fn test_scanner<C: Coin>(coin: C) {
|
||||
|
||||
@@ -13,12 +13,13 @@ use frost::{
|
||||
|
||||
use tokio::time::timeout;
|
||||
|
||||
use serai_db::MemDb;
|
||||
|
||||
use messages::sign::*;
|
||||
use crate::{
|
||||
Payment, Plan,
|
||||
coins::{Output, Transaction, Coin},
|
||||
signer::{SignerEvent, Signer},
|
||||
tests::util::db::MemDb,
|
||||
};
|
||||
|
||||
#[allow(clippy::type_complexity)]
|
||||
|
||||
@@ -17,13 +17,12 @@ use tokio::time::timeout;
|
||||
use scale::Encode;
|
||||
use sp_application_crypto::{RuntimePublic, sr25519::Public};
|
||||
|
||||
use serai_db::MemDb;
|
||||
|
||||
use serai_client::{primitives::*, in_instructions::primitives::*};
|
||||
|
||||
use messages::{sign::SignId, coordinator::*};
|
||||
use crate::{
|
||||
substrate_signer::{SubstrateSignerEvent, SubstrateSigner},
|
||||
tests::util::db::MemDb,
|
||||
};
|
||||
use crate::substrate_signer::{SubstrateSignerEvent, SubstrateSigner};
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_substrate_signer() {
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
use std::{
|
||||
sync::{Arc, RwLock},
|
||||
collections::HashMap,
|
||||
};
|
||||
|
||||
use crate::{DbTxn, Db};
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct MemDb(Arc<RwLock<HashMap<Vec<u8>, Vec<u8>>>>);
|
||||
impl MemDb {
|
||||
pub(crate) fn new() -> MemDb {
|
||||
MemDb(Arc::new(RwLock::new(HashMap::new())))
|
||||
}
|
||||
}
|
||||
impl Default for MemDb {
|
||||
fn default() -> MemDb {
|
||||
MemDb::new()
|
||||
}
|
||||
}
|
||||
|
||||
impl DbTxn for MemDb {
|
||||
fn put(&mut self, key: impl AsRef<[u8]>, value: impl AsRef<[u8]>) {
|
||||
self.0.write().unwrap().insert(key.as_ref().to_vec(), value.as_ref().to_vec());
|
||||
}
|
||||
fn get(&self, key: impl AsRef<[u8]>) -> Option<Vec<u8>> {
|
||||
self.0.read().unwrap().get(key.as_ref()).cloned()
|
||||
}
|
||||
fn del(&mut self, key: impl AsRef<[u8]>) {
|
||||
self.0.write().unwrap().remove(key.as_ref());
|
||||
}
|
||||
fn commit(self) {}
|
||||
}
|
||||
|
||||
impl Db for MemDb {
|
||||
type Transaction = MemDb;
|
||||
fn txn(&mut self) -> MemDb {
|
||||
Self(self.0.clone())
|
||||
}
|
||||
fn get(&self, key: impl AsRef<[u8]>) -> Option<Vec<u8>> {
|
||||
self.0.read().unwrap().get(key.as_ref()).cloned()
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
pub(crate) mod db;
|
||||
@@ -6,12 +6,14 @@ use frost::{Participant, dkg::tests::key_gen};
|
||||
|
||||
use tokio::time::timeout;
|
||||
|
||||
use serai_db::MemDb;
|
||||
|
||||
use crate::{
|
||||
Payment, Plan,
|
||||
coins::{Output, Transaction, Block, Coin},
|
||||
scanner::{ScannerEvent, Scanner},
|
||||
scheduler::Scheduler,
|
||||
tests::{util::db::MemDb, sign},
|
||||
tests::sign,
|
||||
};
|
||||
|
||||
// Tests the Scanner, Scheduler, and Signer together
|
||||
|
||||
Reference in New Issue
Block a user