Fixed code styling.

This commit is contained in:
didier amyot committed 2023-02-11 10:27:24 -05:00
1 parent 7b716c1115
commit c8ae3d3ff9
11 files changed
+85 -96

No files matched your search

+4 -3
View File
@@ -1,9 +1,9 @@
use fraction::Fraction; use fraction::Fraction;
use rusqlite::{params, Connection, OptionalExtension, Result, Row, Transaction}; use rusqlite::{params, Connection, OptionalExtension, Result, Row};
use crate::db::_external_id::{AccountId, Id, UserId}; use crate::db::_external_id::{AccountId, Id, UserId};
use crate::db::_securities::Security; use crate::db::_securities::Security;
use crate::db::_users::User;
use crate::db::external_id::SecurityId; use crate::db::external_id::SecurityId;
use crate::util::{CustomResult, Error}; use crate::util::{CustomResult, Error};
@@ -267,9 +267,10 @@ pub fn add_to_account(
#[cfg(test)] #[cfg(test)]
mod test_accounts { mod test_accounts {
use rusqlite::Connection; use rusqlite::{Connection, Transaction};
use crate::db::_test_utils::setup_users_and_securities; use crate::db::_test_utils::setup_users_and_securities;
use crate::db::users::User;
use crate::migration; use crate::migration;
use super::*; use super::*;
+2 -1
View File
@@ -2,7 +2,7 @@ use rusqlite::{params, Connection, Result, Row, ToSql, Transaction};
use serde::Serialize; use serde::Serialize;
use crate::db::_external_id::{Id, SecurityId}; use crate::db::_external_id::{Id, SecurityId};
use crate::db::users::User;
#[derive(Debug, Serialize, PartialEq)] #[derive(Debug, Serialize, PartialEq)]
pub enum SecurityType { pub enum SecurityType {
@@ -98,6 +98,7 @@ mod test_securities {
use rusqlite::{params, Connection}; use rusqlite::{params, Connection};
use crate::db::_test_utils::*; use crate::db::_test_utils::*;
use crate::db::users::User;
use crate::migration; use crate::migration;
use super::*; use super::*;
+11 -15
View File
@@ -1,17 +1,15 @@
use std::borrow::Borrow; use std::borrow::Borrow;
use std::f32::consts::E;
use std::fs;
use std::fs::File; use std::fs::File;
use std::io::{BufReader, Read, Write};
use std::path::PathBuf; use std::path::PathBuf;
use crate::util::{CustomResult, Error}; use crate::util::{CustomResult, Error};
use apache_avro::types::Value;
use apache_avro::Schema::Union;
use apache_avro::{
from_value, types::Record, Codec, GenericSingleObjectReader, Reader, Schema, Writer,
};
use resource::resource_str;
use rusqlite::Connection; use rusqlite::Connection;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@@ -25,7 +23,7 @@ enum Event {
CacheCheque(CacheChequeEvent), CacheCheque(CacheChequeEvent),
} }
fn process_event_file(conn: &mut Connection, file: File) -> CustomResult<()> { fn process_event_file(_conn: &mut Connection, _file: File) -> CustomResult<()> {
return Ok(()); return Ok(());
} }
@@ -42,12 +40,10 @@ where
} }
mod test { mod test {
use std::fs::File; use rusqlite::Connection;
use apache_avro::Schema;
use tempfile::tempfile; use tempfile::tempfile;
use crate::event_processor::process_event_file;
use super::*; use crate::util::CustomResult;
#[test] #[test]
fn test_basic() -> CustomResult<()> { fn test_basic() -> CustomResult<()> {
+7 -8
View File
@@ -241,7 +241,7 @@ fn process_run_wui_command_line(
logic: &mut dyn CommandLineUserLogic, logic: &mut dyn CommandLineUserLogic,
) { ) {
debug!("Processing run wui command line {:?}.", m); debug!("Processing run wui command line {:?}.", m);
let mut port = m.get_one::<u16>("port").unwrap_or(&2222); let port = m.get_one::<u16>("port").unwrap_or(&2222);
let enable_template_autoreload = m.get_flag("enable-template-autoreload"); let enable_template_autoreload = m.get_flag("enable-template-autoreload");
logic.run_webui(conn, *port, enable_template_autoreload); logic.run_webui(conn, *port, enable_template_autoreload);
} }
@@ -351,15 +351,15 @@ mod cli_test {
self.list_securities_count += 1; self.list_securities_count += 1;
} }
fn process_events(&mut self, conn: &mut Connection, _files: ValuesRef<PathBuf>) { fn process_events(&mut self, _conn: &mut Connection, _files: ValuesRef<PathBuf>) {
self.process_events_count += 1; self.process_events_count += 1;
} }
fn run_webui( fn run_webui(
&mut self, &mut self,
conn: &mut Connection, _conn: &mut Connection,
port: u16, _port: u16,
enable_template_autoreload: bool, _enable_template_autoreload: bool,
) { ) {
self.run_webui_count += 1; self.run_webui_count += 1;
} }
@@ -503,10 +503,9 @@ impl CommandLineUserLogic for ProCommandLineLogic {
println!("fuck me"); println!("fuck me");
} }
fn run_webui(&mut self, conn: &mut Connection, port: u16, enable_template_autoreload: bool) { fn run_webui(&mut self, _conn: &mut Connection, port: u16, enable_template_autoreload: bool) {
info!("Serving web-ui on port {:?}", port); info!("Serving web-ui on port {:?}", port);
web_ui_main(port, web_ui_main(port, enable_template_autoreload).unwrap();
enable_template_autoreload).unwrap();
} }
} }
+9 -9
View File
@@ -1,7 +1,7 @@
use rusqlite::{ffi, params, Connection, Savepoint, Transaction}; use rusqlite::{ffi, params, Connection, Savepoint, Transaction};
use crate::db::accounts; use crate::db::accounts;
use crate::db::accounts::get_account_by_id;
use crate::db::cheques::Cheque; use crate::db::cheques::Cheque;
use crate::db::external_id::AccountId; use crate::db::external_id::AccountId;
use crate::util::*; use crate::util::*;
@@ -124,7 +124,7 @@ fn cash_cheque(tx: &mut Transaction, cheque: &Cheque, account_id: &AccountId) ->
mod test_caching_cheques { mod test_caching_cheques {
use rusqlite::Connection; use rusqlite::Connection;
use crate::db::accounts::{create_checking_account, create_security_emitter_account}; use crate::db::accounts::{create_checking_account, create_security_emitter_account, get_account_by_id};
use crate::db::cheques::{Drawer, Payee}; use crate::db::cheques::{Drawer, Payee};
use crate::db::external_id::{Id, UserId}; use crate::db::external_id::{Id, UserId};
use crate::db::test_utils; use crate::db::test_utils;
@@ -141,7 +141,7 @@ mod test_caching_cheques {
fn setup_security_emitter() -> (Connection, Drawer, Payee, AccountId) { fn setup_security_emitter() -> (Connection, Drawer, Payee, AccountId) {
let mut conn = setup_conn(); let mut conn = setup_conn();
let tx = conn.transaction().unwrap(); let tx = conn.transaction().unwrap();
let (users, securities, accounts) = test_utils::setup_basic_environment(&tx).unwrap(); let (users, securities, _accounts) = test_utils::setup_basic_environment(&tx).unwrap();
let sec = securities.get(0).unwrap(); let sec = securities.get(0).unwrap();
let drawer = users.get(0).unwrap(); let drawer = users.get(0).unwrap();
let payee = users.get(1).unwrap(); let payee = users.get(1).unwrap();
@@ -319,11 +319,11 @@ mod test_caching_cheques {
} }
fn test_invalid_payee( fn test_invalid_payee(
conn: &mut Connection, _conn: &mut Connection,
security_emitter: Drawer, _security_emitter: Drawer,
payee: Payee, _payee: Payee,
) -> CustomResult<()> { ) -> CustomResult<()> {
let (mut conn, security_emitter, payee, payee_account) = setup_security_emitter(); let (mut conn, security_emitter, payee, _payee_account) = setup_security_emitter();
let mut tx = conn.transaction().unwrap(); let mut tx = conn.transaction().unwrap();
let wrong_payee_account = &security_emitter.1; let wrong_payee_account = &security_emitter.1;
@@ -338,13 +338,13 @@ mod test_caching_cheques {
#[test] #[test]
fn test_invalid_payee_security_emitter_cheque() -> CustomResult<()> { fn test_invalid_payee_security_emitter_cheque() -> CustomResult<()> {
let (mut conn, security_emitter, payee, payee_account) = setup_security_emitter(); let (mut conn, security_emitter, payee, _payee_account) = setup_security_emitter();
test_invalid_payee(&mut conn, security_emitter, payee) test_invalid_payee(&mut conn, security_emitter, payee)
} }
#[test] #[test]
fn test_invalid_payee_regular_cheque() -> CustomResult<()> { fn test_invalid_payee_regular_cheque() -> CustomResult<()> {
let (mut conn, drawer, payee, payee_account) = setup_basic(); let (mut conn, drawer, payee, _payee_account) = setup_basic();
test_invalid_payee(&mut conn, drawer, payee) test_invalid_payee(&mut conn, drawer, payee)
} }
} }
+2 -3
View File
@@ -40,8 +40,7 @@ impl SQLiteConnectionFactory for PathSQLiteConnectionFactory {
} }
} }
pub struct InMemorySQLiteConnectionFactory {}
pub struct InMemorySQLiteConnectionFactory{}
impl SQLiteConnectionFactory for InMemorySQLiteConnectionFactory { impl SQLiteConnectionFactory for InMemorySQLiteConnectionFactory {
fn connection(&self) -> Connection { fn connection(&self) -> Connection {
@@ -51,4 +50,4 @@ impl SQLiteConnectionFactory for InMemorySQLiteConnectionFactory {
fn readonly(&self) -> Connection { fn readonly(&self) -> Connection {
Connection::open_in_memory_with_flags(OpenFlags::SQLITE_OPEN_READ_ONLY).unwrap() Connection::open_in_memory_with_flags(OpenFlags::SQLITE_OPEN_READ_ONLY).unwrap()
} }
} }
-3
View File
@@ -1,3 +0,0 @@
struct Config {
path: str,
}
+16 -31
View File
@@ -1,38 +1,35 @@
#![feature(future_join)] #![feature(future_join)]
use std::{collections::HashMap, env, fs, io, path::PathBuf};
use std::io::{Error, ErrorKind};
use std::path::Path;
use std::{env, path::PathBuf};
use crate::webui::worker::worker_loop;
use actix_files; use actix_files;
use actix_utils::future::{ready, Ready};
use actix_web::{ use actix_web::{
App,
dev::ServiceResponse, dev::ServiceResponse,
error, error,
FromRequest, http::{header::ContentType, StatusCode},
http::{header::ContentType, StatusCode}, HttpRequest, HttpResponse, HttpServer, middleware::{ErrorHandlerResponse, ErrorHandlers, Logger}, Responder, Result, web, middleware::{ErrorHandlerResponse, ErrorHandlers, Logger},
web, App, FromRequest, HttpRequest, HttpResponse, HttpServer, Responder, Result,
}; };
use actix_web_lab::respond::Html; use actix_web_lab::respond::Html;
use async_channel; use async_channel;
use futures::{FutureExt, pin_mut, select}; use futures::{pin_mut, select, FutureExt};
use minijinja; use minijinja;
use minijinja_autoreload::AutoReloader; use minijinja_autoreload::AutoReloader;
use tokio::time::{Duration, sleep};
mod views; mod views;
mod config; mod worker;
struct MiniJinjaRenderer { struct MiniJinjaRenderer {
tmpl_env: web::Data<minijinja_autoreload::AutoReloader>, tmpl_env: web::Data<minijinja_autoreload::AutoReloader>,
} }
impl MiniJinjaRenderer { impl MiniJinjaRenderer {
fn render( fn render(&self, tmpl: &str, ctx: impl Into<minijinja::value::Value>) -> Result<Html> {
&self,
tmpl: &str,
ctx: impl Into<minijinja::value::Value>,
) -> Result<Html> {
log::info!("Rendering template {:?}", tmpl); log::info!("Rendering template {:?}", tmpl);
self.tmpl_env self.tmpl_env
.acquire_env() .acquire_env()
@@ -61,19 +58,6 @@ impl FromRequest for MiniJinjaRenderer {
} }
} }
async fn worker_loop(r: async_channel::Receiver<i32>) -> io::Result<()> {
loop {
let x = r.recv().await;
match x {
Ok(v) => println!("Processed value: {:?}", v),
Err(e) => {
println!("Error: {:?}", e);
return Ok(())
}
}
}
}
#[tokio::main] #[tokio::main]
pub async fn web_ui_main(port: u16, enable_template_autoreload: bool) -> std::io::Result<()> { pub async fn web_ui_main(port: u16, enable_template_autoreload: bool) -> std::io::Result<()> {
// The closure is invoked every time the environment is outdated to recreate it. // The closure is invoked every time the environment is outdated to recreate it.
@@ -99,8 +83,9 @@ pub async fn web_ui_main(port: u16, enable_template_autoreload: bool) -> std::io
App::new() App::new()
.app_data(tmpl_reloader.clone()) .app_data(tmpl_reloader.clone())
.app_data(web::Data::new(s.clone())) .app_data(web::Data::new(s.clone()))
.service(actix_files::Files::new("/static", "./resources/static/") .service(
.use_last_modified(true)) actix_files::Files::new("/static", "./resources/static/").use_last_modified(true),
)
.service(views::index) .service(views::index)
.service(views::actions) .service(views::actions)
.service(views::overview) .service(views::overview)
@@ -117,7 +102,7 @@ pub async fn web_ui_main(port: u16, enable_template_autoreload: bool) -> std::io
let t2 = worker_loop(r).fuse(); let t2 = worker_loop(r).fuse();
pin_mut!(t1, t2); pin_mut!(t1, t2);
select!{ select! {
x = t1 => x, x = t1 => x,
y = t2 => y, y = t2 => y,
} }
+17 -21
View File
@@ -1,38 +1,32 @@
use actix_web::{HttpRequest, Responder, web};
use actix_web::http::header::q; use actix_web::{web, HttpRequest, Responder};
use clap::builder::TypedValueParser; use clap::builder::TypedValueParser;
use log::info;
use minijinja::context; use minijinja::context;
use serde::Deserialize; use serde::Deserialize;
use std::collections::HashMap; use std::collections::HashMap;
use log::info;
use resource::resource_str;
use crate::webui::MiniJinjaRenderer; use crate::webui::MiniJinjaRenderer;
#[actix_web::get("/")] #[actix_web::get("/")]
pub async fn index( pub async fn index(tmpl_env: MiniJinjaRenderer) -> actix_web::Result<impl Responder> {
tmpl_env: MiniJinjaRenderer,
) -> actix_web::Result<impl Responder> {
tmpl_env.render("index.html", ()) tmpl_env.render("index.html", ())
} }
#[actix_web::get("/actions")] #[actix_web::get("/actions")]
pub async fn actions( pub async fn actions(tmpl_env: MiniJinjaRenderer) -> actix_web::Result<impl Responder> {
tmpl_env: MiniJinjaRenderer,
) -> actix_web::Result<impl Responder> {
tmpl_env.render("actions.html", ()) tmpl_env.render("actions.html", ())
} }
#[actix_web::get("/overview")] #[actix_web::get("/overview")]
pub async fn overview( pub async fn overview(tmpl_env: MiniJinjaRenderer) -> actix_web::Result<impl Responder> {
tmpl_env: MiniJinjaRenderer,
) -> actix_web::Result<impl Responder> {
tmpl_env.render("overview.html", ()) tmpl_env.render("overview.html", ())
} }
#[actix_web::get("/partials/overview/submit_button")] #[actix_web::get("/partials/overview/submit_button")]
pub async fn overview_submit_button( pub async fn overview_submit_button(
req: HttpRequest, _req: HttpRequest,
tmpl_env: MiniJinjaRenderer, tmpl_env: MiniJinjaRenderer,
query: web::Query<HashMap<String, String>>, query: web::Query<HashMap<String, String>>,
) -> actix_web::Result<impl Responder> { ) -> actix_web::Result<impl Responder> {
@@ -44,32 +38,34 @@ pub async fn overview_submit_button(
#[actix_web::get("/partials/actions/action-form")] #[actix_web::get("/partials/actions/action-form")]
pub async fn actions_partials( pub async fn actions_partials(
req: HttpRequest, _req: HttpRequest,
tmpl_env: MiniJinjaRenderer, tmpl_env: MiniJinjaRenderer,
query: web::Query<HashMap<String, String>>, query: web::Query<HashMap<String, String>>,
) -> actix_web::Result<impl Responder> { ) -> actix_web::Result<impl Responder> {
let event_type = query.get("event_type").unwrap_or(&"404".to_string()).to_string(); let event_type = query
let ctx = context!{event_type => event_type}; .get("event_type")
.unwrap_or(&"404".to_string())
.to_string();
let ctx = context! {event_type => event_type};
let template_location = format!("partials/actions/{:}.html", event_type); let template_location = format!("partials/actions/{:}.html", event_type);
info!("Getting template at: {:?}", template_location); info!("Getting template at: {:?}", template_location);
tmpl_env.render(template_location.as_str(), ctx) tmpl_env.render(template_location.as_str(), ctx)
} }
#[derive(Deserialize, Debug)] #[derive(Deserialize, Debug)]
struct Event1{ struct Event1 {
name: String, name: String,
age: i64, age: i64,
} }
#[derive(Deserialize, Debug)] #[derive(Deserialize, Debug)]
struct Event2{ struct Event2 {
name: String, name: String,
score: i64, score: i64,
} }
#[derive(Deserialize, Debug)] #[derive(Deserialize, Debug)]
enum Event{ enum Event {
Event1(Event1), Event1(Event1),
Event2(Event2), Event2(Event2),
} }
+14
View File
@@ -0,0 +1,14 @@
use std::{io};
pub async fn worker_loop(r: async_channel::Receiver<i32>) -> io::Result<()> {
loop {
let x = r.recv().await;
match x {
Ok(v) => println!("Processed value: {:?}", v),
Err(e) => {
println!("Error: {:?}", e);
return Ok(());
}
}
}
}
+3 -2
View File
@@ -1,3 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
echo "Linting code"
find ${PROJECT_ROOT}/src -name '*.rs' | xargs rustfmt --edition 2021 export src_dir=`dirname ${DIRENV_FILE}`
find ${src_dir}/src -name '*.rs' | xargs rustfmt --edition 2021