add: get_company_from_db()

This commit is contained in:
realaltffour 2020-07-26 10:19:50 +03:00
parent 4d888a9954
commit 22b57e7fb7
No known key found for this signature in database
GPG Key ID: C1265D839D44DCB1
2 changed files with 47 additions and 2 deletions

View File

@ -1,5 +1,6 @@
use libtrader::initializer::libtrader_init;
use libtrader::db::cmd::create_company::create_company;
use libtrader::db::cmd::get_company::get_company_from_db;
use libtrader::ds::generic::company::Company;
use libtrader::ds::server::global_state::GlobalState;
@ -9,13 +10,22 @@ fn main() {
Err(err) => panic!("Failed with error: {}", err),
};
let company: Company = Company::default();
let mut company: Company = Company::default();
company.id = 1;
company.symbol = "TEST".to_string();
company.isin = "TEST".to_string();
company.company_name = "TEST".to_string();
company.primary_exchange = "TEST".to_string();
match create_company(&mut state, company) {
Ok(()) => println!("created company"),
Err(err) => panic!("Failed to create company with error: {}", err),
}
match get_company_from_db(&mut state, "TEST".to_string()) {
Ok(found_company) => println!("we found it! {:?}", found_company),
Err(err) => panic!("we must found the sacred company! err: {}", err),
}
println!("Hello World!");
println!("state: {:?}\n", state);
}

View File

@ -0,0 +1,35 @@
use crate::db::init::db_connect;
use crate::ds::server::global_state::GlobalState;
use crate::ds::generic::company::Company;
pub fn get_company_from_db(state: &mut GlobalState, searched_symbol: String) -> Result<&Company, String> {
/*
* Searches in database if company is available
*/
// Connect to database.
let mut client = db_connect(&state)?;
match client.query("SELECT * FROM public.companies WHERE symbol=$1",
&[&searched_symbol]) {
Ok(row) => {
let mut found_company: Company = Company::default();
found_company.id = row[0].get(0);
found_company.symbol = row[0].get(1);
found_company.isin = row[0].get(2);
found_company.company_name = row[0].get(3);
found_company.primary_exchange = row[0].get(4);
found_company.sector = row[0].get(5);
found_company.industry = row[0].get(6);
found_company.primary_sic_code = row[0].get(7);
found_company.employees = row[0].get(8);
// add found_company to state.
state.companies.insert(row[0].get(1), found_company);
match state.companies.get(&searched_symbol) {
Some(company) => Ok(company),
None => Err("DB_SEARCH_COMPANY_NOT_FOUND".to_string())
}
},
Err(err) => Err(format!("DB_SEARCH_COMPANY_NOT_FOUND: {}", err)),
}
}