@@ -5,6 +5,7 @@ use std::sync::Arc;
|
||||
use axum::async_trait;
|
||||
|
||||
use churn_domain::{LogEvent, ServerEnrollReq};
|
||||
use itertools::Itertools;
|
||||
use serde::{ser::SerializeStruct, Deserialize, Serialize};
|
||||
use tokio::sync::{Mutex, RwLock};
|
||||
|
||||
@@ -58,7 +59,7 @@ impl EventServiceTrait for DefaultEventService {
|
||||
async fn append(&self, req: LogEvent) -> anyhow::Result<()> {
|
||||
self.db
|
||||
.insert("events_log", &req.id.to_string(), &req.serialize_capnp())
|
||||
.await;
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -67,8 +68,15 @@ impl EventServiceTrait for DefaultEventService {
|
||||
|
||||
let events = events
|
||||
.iter()
|
||||
.map(|e| LogEvent::deserialize_capnp(e))
|
||||
.map(|e| match LogEvent::deserialize_capnp(e) {
|
||||
Ok(o) => Ok(o),
|
||||
Err(e) => {
|
||||
tracing::error!("failed to deserialize capnp: {e}");
|
||||
Err(e)
|
||||
}
|
||||
})
|
||||
.flatten()
|
||||
.sorted_by_key(|i| i.timestamp)
|
||||
.skip_while(|item| item.id != cursor)
|
||||
.skip(1)
|
||||
.collect();
|
||||
@@ -82,6 +90,7 @@ impl EventServiceTrait for DefaultEventService {
|
||||
.iter()
|
||||
.map(|e| LogEvent::deserialize_capnp(e))
|
||||
.flatten()
|
||||
.sorted_by_key(|i| i.timestamp)
|
||||
.collect();
|
||||
|
||||
Ok(events)
|
||||
|
Reference in New Issue
Block a user