5个版本
0.1.4 | 2024年5月29日 |
---|---|
0.1.3 | 2024年5月29日 |
0.1.2 | 2024年4月27日 |
0.1.1 | 2024年4月27日 |
0.1.0 | 2024年4月27日 |
#441 in Web编程
59KB
648 行
贸易警报库
trade_alerts
是一个库,允许您为各种交易所和用户创建、存储和管理贸易警报。
即将推出
支持的交易所和其他数据提供者列表:]
入门
要使用贸易警报库,将其添加到您的 Cargo.toml
[dependencies]
trade_alerts = "0.1.0"
功能
示例
以下是使用该库的示例
先决条件
要使用 Supabase 客户端,您需要初始化客户端。
// Initialize Supabase client
let supabase = match Supabase::new_env().await {
Ok(client) => client,
Err(e) => {
eprintln!("{}", e);
return;
},
};
表格配置
我们需要设置所有表格名称,以便我们可以相应地路由所有内容。
// Define a TableConfig
let config: TableConfig = TableConfig::new(
"alerts".to_string(),
"hash".to_string(),
"price_level".to_string(),
"user_id".to_string(),
"symbol".to_string(),
);
添加警报
我们首先需要创建一个警报,然后将其添加到数据库中。
// Create a new alert
let alert: Alert = Alert::new(
Hash { hash: "unique_hash_string".to_string() },
1.2345, // price level
"aud/chf".to_string(), // symbol
"user1234".to_string() // user ID
);
// Adding an alert
match supabase.add_alert(
alert.clone(),
config.clone()
).await {
Ok(_) => println!("Alert added successfully"),
Err(e) => eprintln!("{}", e),
};
根据用户ID获取哈希值
// Fetching hashes by user ID
match supabase.fetch_hashes_by_user_id(
&alert.user_id,
config.clone()
).await {
Ok(hashes) => println!("Fetched hashes: {:?}", hashes),
Err(e) => eprintln!("{}", e),
};
获取警报详情
// Fetching details by hash
match supabase.fetch_details_by_hash(
&alert.hash.hash,
&config
).await {
Ok(details) => println!("Fetched details: {:?}", details),
Err(e) => eprintln!("{}", e),
};
警报管理
在这个示例中,我们假设表格配置已经设置好,并且您的 supabase 客户端已经初始化。
#[tokio::main]
async fn main() {
// Initialize XylexApi
let xylex_api = match XylexApi::new_env().await {
Ok(api) => api,
Err(e) => {
eprintln!("{}", e);
return;
},
};
let symbols: HashSet<&str> = [
"aud/chf", "eur/usd"
].iter().cloned().collect();
match xylex_api.fetch_prices_for_symbols(
symbols
).await {
Ok(prices) => println!("Prices: {:?}", prices),
Err(e) => eprintln!("{}", e),
};
// Check and delete triggered alerts
match xylex_api.check_and_fetch_triggered_alert_hashes(
&supabase,
&config
).await {
Ok(triggered_hashes) => {
if triggered_hashes.is_empty() {
println!("No triggered alerts.");
return;
}
match xylex_api.delete_triggered_alerts_by_hashes(
&supabase,
&config,
triggered_hashes
).await {
Ok(_) => println!("Successfully deleted triggered alerts"),
Err(e) => eprintln!("{}", e),
}
},
Err(e) => eprintln!("{}", e),
};
}
哈希生成
use trade_alerts::HashComponents;
let components: HashComponents = HashComponents::new(
100.0,
"user123".to_string(),
"AAPL".to_string()
);
let hash = components.generate_hash().await;
println!("Generated Hash: {}", hash);
处理成功和错误
-
成功类型:
-
Success::SupabaseSuccess
:Supabase 操作的成功结果。 -
Success::XylexApiSuccess
:Xylex API 操作的成功结果。 -
错误类型:
-
Error::SupabaseError
:与 Supabase 操作相关的错误。 -
Error::TableConfigError
:与表格配置相关的错误。 -
Error::XylexApiError
:与 Xylex API 操作相关的错误。
依赖项
~7–22MB
~274K SLoC