Added nice security page.

This commit is contained in:
didier amyot committed 2023-04-11 09:05:31 -04:00
1 parent 18e7b0df1c
commit 509794f02d
12 files changed
+103 -25

No files matched your search

+8 -5
View File
@@ -1,4 +1,4 @@
use rusqlite::{params, Connection, Result, Row, ToSql, Transaction};
use rusqlite::{params, Connection, Result, Row, ToSql, Transaction, OptionalExtension};
use serde::Serialize;
use crate::db::_external_id::{Id, SecurityId};
@@ -104,18 +104,19 @@ pub struct NewSecurity {
pub name: String,
}
pub fn create_security(tx: &Transaction, sec: &NewSecurity) -> CustomResult<Security> {
pub fn create_security(tx: &Connection, sec: &NewSecurity) -> CustomResult<Security> {
let q = "INSERT INTO
securities(name, symbol, security_type)
VALUES(?1, ?2, ?3)";
let params = (&sec.name, &sec.symbol, &sec.security_type);
tx.execute(q, params).map_err(Error::SqlError)?;
let new_sec_id = tx.last_insert_rowid() as i32;
let new_sec_id:i64 = tx.last_insert_rowid();
return get_security_by_id(tx, new_sec_id);
let ret = get_security_by_id(tx, &SecurityId::from_id(new_sec_id))?;
Ok(ret.unwrap())
}
pub fn get_security_by_id(tx: &Transaction, id: i32) -> CustomResult<Security> {
pub fn get_security_by_id(tx: &Connection, id: & SecurityId) -> CustomResult<Option<Security>> {
let q = "SELECT id AS sec_id,
security_type AS sec_security_type,
symbol AS sec_symbol,
@@ -123,7 +124,9 @@ pub fn get_security_by_id(tx: &Transaction, id: i32) -> CustomResult<Security> {
FROM securities
WHERE id = ?1";
tx.query_row(q, params![id], Security::from_row)
.optional()
.map_err(Error::SqlError)
}
pub fn list_securities(conn: &Connection) -> CustomResult<Vec<Security>> {