From ad7a6407ffb15ef0bab984d8710b432cd910bcb7 Mon Sep 17 00:00:00 2001 From: Nikolaos Karaolidis Date: Tue, 16 Jan 2024 13:55:44 +0000 Subject: [PATCH] Organize modules Signed-off-by: Nikolaos Karaolidis --- src/config.rs | 2 +- src/data/market.rs | 22 +++++++++---------- src/data/mod.rs | 2 +- src/main.rs | 2 +- src/routes/assets.rs | 2 +- src/types/{ => alpaca}/api/incoming/asset.rs | 2 +- src/types/{ => alpaca}/api/incoming/bar.rs | 0 src/types/{ => alpaca}/api/incoming/mod.rs | 0 src/types/{ => alpaca}/api/mod.rs | 0 src/types/alpaca/mod.rs | 5 +++++ src/types/{ => alpaca}/source.rs | 0 .../websocket/data/incoming/bar.rs | 0 .../websocket/data/incoming/mod.rs | 0 .../websocket/data/incoming/subscription.rs | 0 .../websocket/data/incoming/success.rs | 0 src/types/{ => alpaca}/websocket/data/mod.rs | 0 .../websocket/data/outgoing/auth.rs | 0 .../websocket/data/outgoing/mod.rs | 0 .../websocket/data/outgoing/subscribe.rs | 0 src/types/{ => alpaca}/websocket/mod.rs | 0 src/types/mod.rs | 5 +---- src/utils/mod.rs | 3 +++ src/{ => utils}/time.rs | 0 23 files changed, 24 insertions(+), 21 deletions(-) rename src/types/{ => alpaca}/api/incoming/asset.rs (97%) rename src/types/{ => alpaca}/api/incoming/bar.rs (100%) rename src/types/{ => alpaca}/api/incoming/mod.rs (100%) rename src/types/{ => alpaca}/api/mod.rs (100%) create mode 100644 src/types/alpaca/mod.rs rename src/types/{ => alpaca}/source.rs (100%) rename src/types/{ => alpaca}/websocket/data/incoming/bar.rs (100%) rename src/types/{ => alpaca}/websocket/data/incoming/mod.rs (100%) rename src/types/{ => alpaca}/websocket/data/incoming/subscription.rs (100%) rename src/types/{ => alpaca}/websocket/data/incoming/success.rs (100%) rename src/types/{ => alpaca}/websocket/data/mod.rs (100%) rename src/types/{ => alpaca}/websocket/data/outgoing/auth.rs (100%) rename src/types/{ => alpaca}/websocket/data/outgoing/mod.rs (100%) rename src/types/{ => alpaca}/websocket/data/outgoing/subscribe.rs (100%) rename src/types/{ => alpaca}/websocket/mod.rs (100%) create mode 100644 src/utils/mod.rs rename src/{ => utils}/time.rs (100%) diff --git a/src/config.rs b/src/config.rs index fb90c93..d3ad4aa 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,4 +1,4 @@ -use crate::types::Source; +use crate::types::alpaca::Source; use governor::{DefaultDirectRateLimiter, Quota, RateLimiter}; use reqwest::{header::HeaderMap, Client}; use std::{env, num::NonZeroU32, sync::Arc}; diff --git a/src/data/market.rs b/src/data/market.rs index 185cb4e..20f2ad1 100644 --- a/src/data/market.rs +++ b/src/data/market.rs @@ -5,12 +5,12 @@ use crate::{ }, data::authenticate_websocket, database, - time::{duration_until, last_minute, next_minute, ONE_MINUTE}, types::{ - api::incoming, + alpaca::{api::incoming, websocket}, asset::{self, Asset}, - websocket, Bar, BarValidity, BroadcastMessage, Class, + Bar, BarValidity, BroadcastMessage, Class, }, + utils::{duration_until, last_minute, next_minute, ONE_MINUTE}, }; use core::panic; use futures_util::{ @@ -283,8 +283,9 @@ pub async fn backfill( ]); app_config.alpaca_rate_limit.until_ready().await; + let response = request.send().await.unwrap(); - let mut response = if response.status() == reqwest::StatusCode::OK { + let response = if response.status() == reqwest::StatusCode::OK { response.json::().await.unwrap() } else { error!( @@ -297,14 +298,11 @@ pub async fn backfill( break; }; - for bar in response - .bars - .remove(&asset.symbol) - .unwrap_or_default() - .unwrap_or_default() - { - bars.push(Bar::from((bar, asset.symbol.clone()))); - } + response.bars.into_iter().for_each(|(symbol, bar_vec)| { + bar_vec.unwrap_or_default().into_iter().for_each(|bar| { + bars.push(Bar::from((bar, symbol.clone()))); + }); + }); if response.next_page_token.is_none() { break; diff --git a/src/data/mod.rs b/src/data/mod.rs index b676882..0b62473 100644 --- a/src/data/mod.rs +++ b/src/data/mod.rs @@ -1,6 +1,6 @@ pub mod market; -use crate::{config::Config, types::websocket}; +use crate::{config::Config, types::alpaca::websocket}; use core::panic; use futures_util::{ stream::{SplitSink, SplitStream}, diff --git a/src/main.rs b/src/main.rs index 91a193a..4771ec4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,8 +5,8 @@ mod config; mod data; mod database; mod routes; -mod time; mod types; +mod utils; use config::Config; use dotenv::dotenv; diff --git a/src/routes/assets.rs b/src/routes/assets.rs index e21cc0a..3c84da3 100644 --- a/src/routes/assets.rs +++ b/src/routes/assets.rs @@ -1,7 +1,7 @@ use crate::config::{Config, ALPACA_ASSET_API_URL}; use crate::database; use crate::types::{ - api::incoming::{self, asset::Status}, + alpaca::api::incoming::{self, asset::Status}, asset, Asset, BroadcastMessage, }; use axum::{extract::Path, Extension, Json}; diff --git a/src/types/api/incoming/asset.rs b/src/types/alpaca/api/incoming/asset.rs similarity index 97% rename from src/types/api/incoming/asset.rs rename to src/types/alpaca/api/incoming/asset.rs index 972d79c..810d0e8 100644 --- a/src/types/api/incoming/asset.rs +++ b/src/types/alpaca/api/incoming/asset.rs @@ -1,6 +1,6 @@ #![allow(clippy::struct_excessive_bools)] -use crate::types::api::impl_from_enum; +use crate::types::alpaca::api::impl_from_enum; use serde::{Deserialize, Serialize}; #[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)] diff --git a/src/types/api/incoming/bar.rs b/src/types/alpaca/api/incoming/bar.rs similarity index 100% rename from src/types/api/incoming/bar.rs rename to src/types/alpaca/api/incoming/bar.rs diff --git a/src/types/api/incoming/mod.rs b/src/types/alpaca/api/incoming/mod.rs similarity index 100% rename from src/types/api/incoming/mod.rs rename to src/types/alpaca/api/incoming/mod.rs diff --git a/src/types/api/mod.rs b/src/types/alpaca/api/mod.rs similarity index 100% rename from src/types/api/mod.rs rename to src/types/alpaca/api/mod.rs diff --git a/src/types/alpaca/mod.rs b/src/types/alpaca/mod.rs new file mode 100644 index 0000000..aa780dc --- /dev/null +++ b/src/types/alpaca/mod.rs @@ -0,0 +1,5 @@ +pub mod api; +pub mod source; +pub mod websocket; + +pub use source::Source; diff --git a/src/types/source.rs b/src/types/alpaca/source.rs similarity index 100% rename from src/types/source.rs rename to src/types/alpaca/source.rs diff --git a/src/types/websocket/data/incoming/bar.rs b/src/types/alpaca/websocket/data/incoming/bar.rs similarity index 100% rename from src/types/websocket/data/incoming/bar.rs rename to src/types/alpaca/websocket/data/incoming/bar.rs diff --git a/src/types/websocket/data/incoming/mod.rs b/src/types/alpaca/websocket/data/incoming/mod.rs similarity index 100% rename from src/types/websocket/data/incoming/mod.rs rename to src/types/alpaca/websocket/data/incoming/mod.rs diff --git a/src/types/websocket/data/incoming/subscription.rs b/src/types/alpaca/websocket/data/incoming/subscription.rs similarity index 100% rename from src/types/websocket/data/incoming/subscription.rs rename to src/types/alpaca/websocket/data/incoming/subscription.rs diff --git a/src/types/websocket/data/incoming/success.rs b/src/types/alpaca/websocket/data/incoming/success.rs similarity index 100% rename from src/types/websocket/data/incoming/success.rs rename to src/types/alpaca/websocket/data/incoming/success.rs diff --git a/src/types/websocket/data/mod.rs b/src/types/alpaca/websocket/data/mod.rs similarity index 100% rename from src/types/websocket/data/mod.rs rename to src/types/alpaca/websocket/data/mod.rs diff --git a/src/types/websocket/data/outgoing/auth.rs b/src/types/alpaca/websocket/data/outgoing/auth.rs similarity index 100% rename from src/types/websocket/data/outgoing/auth.rs rename to src/types/alpaca/websocket/data/outgoing/auth.rs diff --git a/src/types/websocket/data/outgoing/mod.rs b/src/types/alpaca/websocket/data/outgoing/mod.rs similarity index 100% rename from src/types/websocket/data/outgoing/mod.rs rename to src/types/alpaca/websocket/data/outgoing/mod.rs diff --git a/src/types/websocket/data/outgoing/subscribe.rs b/src/types/alpaca/websocket/data/outgoing/subscribe.rs similarity index 100% rename from src/types/websocket/data/outgoing/subscribe.rs rename to src/types/alpaca/websocket/data/outgoing/subscribe.rs diff --git a/src/types/websocket/mod.rs b/src/types/alpaca/websocket/mod.rs similarity index 100% rename from src/types/websocket/mod.rs rename to src/types/alpaca/websocket/mod.rs diff --git a/src/types/mod.rs b/src/types/mod.rs index 323d5ae..f1aba5f 100644 --- a/src/types/mod.rs +++ b/src/types/mod.rs @@ -1,12 +1,9 @@ -pub mod api; +pub mod alpaca; pub mod asset; pub mod bar; -pub mod source; -pub mod websocket; pub use asset::{Asset, Class, Exchange}; pub use bar::{Bar, BarValidity}; -pub use source::Source; #[derive(Clone, Debug, PartialEq, Eq)] pub enum BroadcastMessage { diff --git a/src/utils/mod.rs b/src/utils/mod.rs new file mode 100644 index 0000000..bfa47ff --- /dev/null +++ b/src/utils/mod.rs @@ -0,0 +1,3 @@ +pub mod time; + +pub use time::{duration_until, last_minute, next_minute, ONE_MINUTE}; diff --git a/src/time.rs b/src/utils/time.rs similarity index 100% rename from src/time.rs rename to src/utils/time.rs