Started to implement proper event processing.

This commit is contained in:
didier amyot committed 2023-02-23 13:41:47 -05:00
1 parent af11915a52
commit 238cd9f2da
7 files changed
+75 -88

No files matched your search

+12 -43
View File
@@ -1,52 +1,21 @@
use std::borrow::Borrow;
use std::fs::File;
use std::path::PathBuf;
use rusqlite::{Connection, Transaction};
use crate::events::{Bogus, CreateNewUser, Event};
use crate::util::{CustomResult, Error};
use rusqlite::Connection;
use serde::{Deserialize, Serialize};
#[derive(Deserialize, Serialize, Debug, PartialEq)]
struct CacheChequeEvent {
account: i64,
}
#[derive(Deserialize, Serialize, Debug, PartialEq)]
enum Event {
CacheCheque(CacheChequeEvent),
}
fn process_event_file(_conn: &mut Connection, _file: File) -> CustomResult<()> {
return Ok(());
}
pub fn process_event_files<I>(conn: &mut Connection, paths: I) -> CustomResult<()>
where
I: Iterator,
I::Item: Borrow<PathBuf>,
{
for path in paths {
let file = File::open(path.borrow()).map_err(Error::IOError)?;
process_event_file(conn, file)?;
}
fn process_bogus_event(tx: &Transaction, event: Bogus) -> CustomResult<()> {
Ok(())
}
mod test {
use tempfile::tempfile;
use super::*;
fn process_create_new_user_event(tx: &Transaction, event: CreateNewUser) -> CustomResult<()> {
Ok(())
}
#[test]
fn test_basic() -> CustomResult<()> {
let file = tempfile().unwrap();
let mut conn = Connection::open_in_memory().unwrap();
let ret = process_event_file(&mut conn, file);
ret
pub fn process_event(conn: &mut Connection, event: Event) -> CustomResult<()> {
let tx = conn.transaction().map_err(Error::SqlError)?;
match event {
Event::Bogus(e) => process_bogus_event(&tx, e),
Event::CreateNewUser(e) => process_create_new_user_event(&tx, e),
}
}