use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum NatsStreams {
DataCrawling,
StockScheduler,
Notification,
}
impl NatsStreams {
pub fn _as_str(&self) -> &'static str {
match self {
NatsStreams::DataCrawling => "data-crawling",
NatsStreams::StockScheduler => "stock-scheduler",
NatsStreams::Notification => "notification",
}
}
pub fn to_string(&self) -> String {
match self {
NatsStreams::DataCrawling => "data-crawling".to_string(),
NatsStreams::StockScheduler => "stock-scheduler".to_string(),
NatsStreams::Notification => "notification".to_string(),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DataCrawlStreamSubjects {
Historical,
IntradayTrading,
FollowingInvestorFindUserPostFromHomepage,
FollowingInvestorFindUserCommentFromPost,
Unknown,
}
impl DataCrawlStreamSubjects {
pub fn as_str(&self) -> &'static str {
match self {
DataCrawlStreamSubjects::Historical => "historical",
DataCrawlStreamSubjects::IntradayTrading => "intraday-trading",
DataCrawlStreamSubjects::FollowingInvestorFindUserPostFromHomepage => {
"following-investor.find-user-comment-from-homepage"
}
DataCrawlStreamSubjects::FollowingInvestorFindUserCommentFromPost => {
"following-investor.find-user-comment-from-post"
}
DataCrawlStreamSubjects::Unknown => "unknown",
}
}
pub fn from(s: &str) -> Self {
match s {
"historical" => DataCrawlStreamSubjects::Historical,
"intraday-trading" => DataCrawlStreamSubjects::IntradayTrading,
"following-investor.find-user-comment-from-homepage" => DataCrawlStreamSubjects::FollowingInvestorFindUserPostFromHomepage,
"following-investor.find-user-comment-from-post" => DataCrawlStreamSubjects::FollowingInvestorFindUserCommentFromPost,
_ => DataCrawlStreamSubjects::Unknown,
}
}
pub fn to_vec() -> Vec<&'static str> {
[
DataCrawlStreamSubjects::Historical,
DataCrawlStreamSubjects::IntradayTrading,
DataCrawlStreamSubjects::FollowingInvestorFindUserPostFromHomepage,
DataCrawlStreamSubjects::FollowingInvestorFindUserCommentFromPost,
]
.iter()
.map(|k| k.as_str())
.collect()
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum StockSchedulerStreamSubjects {
OrderAnalysisRealtime,
VolumeAnalysisRealtime,
VolumeAnalysisForeignAnalyze,
PriceAnalysisRealtime,
TradingPatternAnalysis,
Unknown,
}
impl StockSchedulerStreamSubjects {
pub fn as_str(&self) -> &'static str {
match self {
StockSchedulerStreamSubjects::OrderAnalysisRealtime => "order-analysis.realtime",
StockSchedulerStreamSubjects::TradingPatternAnalysis => "trading-pattern.analysis",
StockSchedulerStreamSubjects::VolumeAnalysisRealtime => "volume-analysis.realtime",
StockSchedulerStreamSubjects::VolumeAnalysisForeignAnalyze => {
"volume-analysis.foreign.analyze"
}
StockSchedulerStreamSubjects::PriceAnalysisRealtime => "price-analysis.realtime",
StockSchedulerStreamSubjects::Unknown => "unknown",
}
}
pub fn to_vec() -> Vec<&'static str> {
[
StockSchedulerStreamSubjects::OrderAnalysisRealtime,
StockSchedulerStreamSubjects::VolumeAnalysisRealtime,
StockSchedulerStreamSubjects::VolumeAnalysisForeignAnalyze,
StockSchedulerStreamSubjects::PriceAnalysisRealtime,
StockSchedulerStreamSubjects::TradingPatternAnalysis,
]
.iter()
.map(|k| k.as_str())
.collect()
}
pub fn from(s: &str) -> Self {
match s {
"order-analysis.realtime" => StockSchedulerStreamSubjects::OrderAnalysisRealtime,
"trading-pattern.analysis" => StockSchedulerStreamSubjects::TradingPatternAnalysis,
"volume-analysis.realtime" => StockSchedulerStreamSubjects::VolumeAnalysisRealtime,
"volume-analysis.foreign.analyze" => StockSchedulerStreamSubjects::VolumeAnalysisForeignAnalyze,
"price-analysis.realtime" => StockSchedulerStreamSubjects::PriceAnalysisRealtime,
_ => StockSchedulerStreamSubjects::Unknown,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum NotificationStreamSubjects {
NotifyAbnormalTrade,
Unknown,
}
impl NotificationStreamSubjects {
pub fn as_str(&self) -> &'static str {
match self {
NotificationStreamSubjects::NotifyAbnormalTrade => "notify.abnormal-trade",
NotificationStreamSubjects::Unknown => "unknown",
}
}
pub fn to_vec() -> Vec<&'static str> {
[NotificationStreamSubjects::NotifyAbnormalTrade]
.iter()
.map(|k| k.as_str())
.collect()
}
pub fn from(s: &str) -> Self {
match s {
"notify.abnormal-trade" => NotificationStreamSubjects::NotifyAbnormalTrade,
_ => NotificationStreamSubjects::Unknown,
}
}
}
impl fmt::Display for StockSchedulerStreamSubjects {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.as_str())
}
}
impl fmt::Display for DataCrawlStreamSubjects {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.as_str())
}
}
impl fmt::Display for NotificationStreamSubjects {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.as_str())
}
}