Reorganize bel impl
This commit is contained in:
parent
2edfe90fd4
commit
526b826091
1 changed files with 41 additions and 43 deletions
|
|
@ -1,7 +1,7 @@
|
|||
use crate::data_build_event::Event;
|
||||
use crate::{BuildState, DataBuildEvent, WantDetail};
|
||||
use prost::Message;
|
||||
use rusqlite::{Connection, Result as SqliteResult};
|
||||
use rusqlite::Connection;
|
||||
use std::error::Error;
|
||||
use std::sync::{Arc, RwLock};
|
||||
use std::time::{SystemTime, UNIX_EPOCH};
|
||||
|
|
@ -15,6 +15,43 @@ trait BELStorage {
|
|||
) -> Result<Vec<DataBuildEvent>, Box<dyn Error>>;
|
||||
}
|
||||
|
||||
struct MemoryBELStorage {
|
||||
events: Vec<DataBuildEvent>,
|
||||
}
|
||||
|
||||
impl MemoryBELStorage {
|
||||
fn create() -> MemoryBELStorage {
|
||||
MemoryBELStorage { events: vec![] }
|
||||
}
|
||||
}
|
||||
|
||||
impl BELStorage for MemoryBELStorage {
|
||||
fn append_event(&mut self, event: Event) -> Result<u64, Box<dyn Error>> {
|
||||
let now = SystemTime::now();
|
||||
let duration_since_epoch = now.duration_since(UNIX_EPOCH).expect("Time went backwards");
|
||||
|
||||
let timestamp = duration_since_epoch.as_nanos() as u64;
|
||||
|
||||
let dbe = DataBuildEvent {
|
||||
timestamp,
|
||||
event_id: self.events.len() as u64,
|
||||
event: Some(event),
|
||||
};
|
||||
self.events.push(dbe);
|
||||
Ok(self.events.len() as u64)
|
||||
}
|
||||
|
||||
fn list_events(
|
||||
&self,
|
||||
since_idx: u64,
|
||||
limit: u64,
|
||||
) -> Result<Vec<DataBuildEvent>, Box<dyn Error>> {
|
||||
Ok(self.events.iter().cloned().filter(|e| e.timestamp > since_idx)
|
||||
.take(limit as usize)
|
||||
.collect())
|
||||
}
|
||||
}
|
||||
|
||||
struct SqliteBELStorage {
|
||||
connection: Connection,
|
||||
}
|
||||
|
|
@ -149,48 +186,9 @@ impl<B: BELStorage> BuildEventLog<B> {
|
|||
}
|
||||
|
||||
mod tests {
|
||||
use crate::build_event_log::{BELStorage, BuildEventLog, SqliteBELStorage};
|
||||
use crate::build_event_log::{BELStorage, BuildEventLog, MemoryBELStorage, SqliteBELStorage};
|
||||
use crate::data_build_event::Event;
|
||||
use crate::{DataBuildEvent, PartitionRef, WantCreateEventV1};
|
||||
use std::error::Error;
|
||||
use std::time::{SystemTime, UNIX_EPOCH};
|
||||
|
||||
struct TestBELStorage {
|
||||
events: Vec<DataBuildEvent>,
|
||||
}
|
||||
|
||||
impl TestBELStorage {
|
||||
fn create() -> TestBELStorage {
|
||||
TestBELStorage { events: vec![] }
|
||||
}
|
||||
}
|
||||
|
||||
impl BELStorage for TestBELStorage {
|
||||
fn append_event(&mut self, event: Event) -> Result<u64, Box<dyn Error>> {
|
||||
let now = SystemTime::now();
|
||||
let duration_since_epoch = now.duration_since(UNIX_EPOCH).expect("Time went backwards");
|
||||
|
||||
let timestamp = duration_since_epoch.as_nanos() as u64;
|
||||
|
||||
let dbe = DataBuildEvent {
|
||||
timestamp,
|
||||
event_id: self.events.len() as u64,
|
||||
event: Some(event),
|
||||
};
|
||||
self.events.push(dbe);
|
||||
Ok(self.events.len() as u64)
|
||||
}
|
||||
|
||||
fn list_events(
|
||||
&self,
|
||||
since_idx: u64,
|
||||
limit: u64,
|
||||
) -> Result<Vec<DataBuildEvent>, Box<dyn Error>> {
|
||||
Ok(self.events.iter().cloned().filter(|e| e.timestamp > since_idx)
|
||||
.take(limit as usize)
|
||||
.collect())
|
||||
}
|
||||
}
|
||||
use crate::{PartitionRef, WantCreateEventV1};
|
||||
|
||||
#[test]
|
||||
fn test_hello() {
|
||||
|
|
@ -199,7 +197,7 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_append_event() {
|
||||
let storage = TestBELStorage::create();
|
||||
let storage = MemoryBELStorage::create();
|
||||
let mut log = BuildEventLog::create(storage);
|
||||
// Initial state
|
||||
assert_eq!(log.storage.events.len(), 0);
|
||||
|
|
|
|||
Loading…
Reference in a new issue