From 9faf6638a3c2541a70aacda1badae09104a741c0 Mon Sep 17 00:00:00 2001 From: didier amyot Date: Thu, 18 May 2023 11:46:36 -0400 Subject: [PATCH] Started to implement market size history. --- src/db/_accounts.rs | 3 +-- src/services/_securities.rs | 5 +++++ src/webui/data_views.rs | 20 +++++++++++++++++++- src/webui/views.rs | 6 +++--- tools/init-dev | 1 + 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/db/_accounts.rs b/src/db/_accounts.rs index 142306d..0075da2 100644 --- a/src/db/_accounts.rs +++ b/src/db/_accounts.rs @@ -460,8 +460,7 @@ pub fn get_security_market_cap(tx: &Connection, sec: &SecurityId) -> CustomResul let q = " SELECT COALESCE(-1 * SUM(amount), 0) AS count FROM accounts - WHERE security = ? - AND account_type = ? + WHERE security = ? AND account_type = ? "; let params = params![sec, AccountType::SecurityEmitter.to_string()]; tx.query_row(q, params, |row| row.get("count")) diff --git a/src/services/_securities.rs b/src/services/_securities.rs index 4c8f0fe..cae76e2 100644 --- a/src/services/_securities.rs +++ b/src/services/_securities.rs @@ -49,4 +49,9 @@ impl SecurityService<'_> { pub fn get_security_market_cap(&self, sec_id: &SecurityId)-> CustomResult { accounts::get_security_market_cap(self.conn, sec_id) } + + pub fn get_security_market_cap_history(&self, sec_id: &SecurityId)-> CustomResult { + Ok(89) + + } } diff --git a/src/webui/data_views.rs b/src/webui/data_views.rs index db09982..857d15f 100644 --- a/src/webui/data_views.rs +++ b/src/webui/data_views.rs @@ -3,6 +3,7 @@ use crate::webui::services::ServicesFactory; use crate::webui::templates::MiniJinjaRenderer; use actix_web::{error, web, HttpRequest, Responder, Result}; use serde::Serialize; +use crate::db::external_id::SecurityId; struct ResponseData{ @@ -19,7 +20,6 @@ pub async fn get_account_amount_history( let conn = service_factory.get_connection()?; let auth_service = service_factory.get_authentication_service(&conn)?; - let conn = service_factory.get_connection()?; let account_service = service_factory.get_account_service(&conn)?; let user_id = auth_service.get_login(&req).unwrap(); let ac = account_service @@ -28,3 +28,21 @@ pub async fn get_account_amount_history( Ok(web::Json(ac)) } + + +#[actix_web::get("/data/securities/{sec}/market-cap-history.json")] +pub async fn get_security_market_cap_history( + sec: web::Path, + req: HttpRequest, + service_factory: web::Data, +) -> Result { + let sec_id = SecurityId::from_string(&sec.to_string()).unwrap(); + + let conn = service_factory.get_connection()?; + let security_service = service_factory.get_security_service(&conn)?; + let ac = security_service + .get_security_market_cap_history(&sec_id) + .map_err(error::ErrorInternalServerError)?; + + Ok(web::Json(ac)) +} \ No newline at end of file diff --git a/src/webui/views.rs b/src/webui/views.rs index 29fd41c..333effa 100644 --- a/src/webui/views.rs +++ b/src/webui/views.rs @@ -158,11 +158,11 @@ pub async fn actions_partials( let security_service = service_factory.get_security_service(&conn)?; let account_service = service_factory.get_account_service(&conn)?; let authentication_service = service_factory.get_authentication_service(&conn)?; - let maybeUser = authentication_service.get_login(&req); - if maybeUser.is_none() { + let maybe_user = authentication_service.get_login(&req); + if maybe_user.is_none() { return Err(actix_web::error::ErrorForbidden("")) } - let user = maybeUser.unwrap(); + let user = maybe_user.unwrap(); let ctx = context! { event_type => event_type, securities => security_service.list_securities(), diff --git a/tools/init-dev b/tools/init-dev index 04a09b4..76f2350 100755 --- a/tools/init-dev +++ b/tools/init-dev @@ -1,2 +1,3 @@ #!/usr/bin/env bash cargo run users new --name didier.amyot@gmail.com --public-key fooof +cargo run users new --name justin.trudeau@gmail.com --public-key heho