Add automatic websocket reconnection

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2024-03-11 23:41:06 +00:00
parent d02f958865
commit d2d20e2978
33 changed files with 838 additions and 664 deletions

View File

@@ -3,13 +3,13 @@ use crate::{
database,
};
use log::{info, warn};
use qrust::types::alpaca;
use qrust::{alpaca, types};
use std::{collections::HashMap, sync::Arc};
use time::OffsetDateTime;
use tokio::join;
pub async fn check_account(config: &Arc<Config>) {
let account = alpaca::api::incoming::account::get(
let account = alpaca::account::get(
&config.alpaca_client,
&config.alpaca_rate_limiter,
None,
@@ -19,7 +19,7 @@ pub async fn check_account(config: &Arc<Config>) {
.unwrap();
assert!(
!(account.status != alpaca::api::incoming::account::Status::Active),
!(account.status != types::alpaca::api::incoming::account::Status::Active),
"Account status is not active: {:?}.",
account.status
);
@@ -46,11 +46,11 @@ pub async fn rehydrate_orders(config: &Arc<Config>) {
let mut orders = vec![];
let mut after = OffsetDateTime::UNIX_EPOCH;
while let Some(message) = alpaca::api::incoming::order::get(
while let Some(message) = alpaca::orders::get(
&config.alpaca_client,
&config.alpaca_rate_limiter,
&alpaca::api::outgoing::order::Order {
status: Some(alpaca::api::outgoing::order::Status::All),
&types::alpaca::api::outgoing::order::Order {
status: Some(types::alpaca::api::outgoing::order::Status::All),
after: Some(after),
..Default::default()
},
@@ -67,7 +67,7 @@ pub async fn rehydrate_orders(config: &Arc<Config>) {
let orders = orders
.into_iter()
.flat_map(&alpaca::api::incoming::order::Order::normalize)
.flat_map(&types::alpaca::api::incoming::order::Order::normalize)
.collect::<Vec<_>>();
database::orders::upsert_batch(
@@ -85,7 +85,7 @@ pub async fn rehydrate_positions(config: &Arc<Config>) {
info!("Rehydrating position data.");
let positions_future = async {
alpaca::api::incoming::position::get(
alpaca::positions::get(
&config.alpaca_client,
&config.alpaca_rate_limiter,
None,