From 526b826091af734ec3e38a769c77a2b1bfa653b6 Mon Sep 17 00:00:00 2001 From: Stuart Axelbrooke Date: Mon, 15 Sep 2025 12:28:18 -0700 Subject: [PATCH] Reorganize bel impl --- databuild/build_event_log.rs | 84 ++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 43 deletions(-) diff --git a/databuild/build_event_log.rs b/databuild/build_event_log.rs index 9df6f8e..a0aaee6 100644 --- a/databuild/build_event_log.rs +++ b/databuild/build_event_log.rs @@ -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, Box>; } +struct MemoryBELStorage { + events: Vec, +} + +impl MemoryBELStorage { + fn create() -> MemoryBELStorage { + MemoryBELStorage { events: vec![] } + } +} + +impl BELStorage for MemoryBELStorage { + fn append_event(&mut self, event: Event) -> Result> { + 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, Box> { + 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 BuildEventLog { } 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, - } - - impl TestBELStorage { - fn create() -> TestBELStorage { - TestBELStorage { events: vec![] } - } - } - - impl BELStorage for TestBELStorage { - fn append_event(&mut self, event: Event) -> Result> { - 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, Box> { - 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);