Added nice security page.
This commit is contained in:
1 parent
18e7b0df1c
commit
509794f02d
12 files changed
+103
-25
No files matched your search
@@ -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>> {
|
||||
|
||||
Reference in new issue
Block a user