|
|
@@ -5,7 +5,7 @@ use tokio::fs::File;
|
|
|
use tokio::io::AsyncWriteExt;
|
|
|
use tokio::{fs};
|
|
|
use tracing::{error, info};
|
|
|
-use standard::SpecialTrade;
|
|
|
+use standard::{Record, SpecialTrade};
|
|
|
|
|
|
pub async fn write_to_file(json_data: String, file_path: String) {
|
|
|
// 尝试创建文件路径
|
|
|
@@ -72,23 +72,6 @@ pub fn minute_to_date(minute: i64) -> String {
|
|
|
datetime_east_eight.format("%Y%m%d").to_string()
|
|
|
}
|
|
|
|
|
|
-// 从本地json的db里面加载SpecialTrade
|
|
|
-pub async fn read_special_trades_from_file<P: AsRef<Path>>(file_path: P) -> Vec<SpecialTrade> {
|
|
|
- let file_content = fs::read_to_string(file_path).await;
|
|
|
-
|
|
|
- // 检查文件内容是否成功读取
|
|
|
- if let Ok(content) = file_content {
|
|
|
- // 尝试反序列化文件内容
|
|
|
- if let Ok(trades) = serde_json::from_str::<Vec<SpecialTrade>>(&content) {
|
|
|
- trades // 成功反序列化,返回结果
|
|
|
- } else {
|
|
|
- vec![] // 反序列化失败,返回空 Vec
|
|
|
- }
|
|
|
- } else {
|
|
|
- vec![] // 读取文件失败,返回空 Vec
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
// 将一个时间段范围内的所有SpecialTrade返回(以json形式)
|
|
|
pub async fn collect_special_trades_json(start_timestamp: i64, end_timestamp: i64, exchange: &str, symbol: &str) -> Value {
|
|
|
let mut all_trades = Vec::new();
|
|
|
@@ -96,7 +79,20 @@ pub async fn collect_special_trades_json(start_timestamp: i64, end_timestamp: i6
|
|
|
|
|
|
for filename in filenames {
|
|
|
let file_path = PathBuf::from(filename.as_str());
|
|
|
- let mut trades = read_special_trades_from_file(file_path).await;
|
|
|
+ let file_content = fs::read_to_string(file_path).await;
|
|
|
+
|
|
|
+ // 检查文件内容是否成功读取
|
|
|
+ let mut trades = if let Ok(content) = file_content {
|
|
|
+ // 尝试反序列化文件内容
|
|
|
+ if let Ok(trades) = serde_json::from_str::<Vec<SpecialTrade>>(&content) {
|
|
|
+ trades // 成功反序列化,返回结果
|
|
|
+ } else {
|
|
|
+ vec![] // 反序列化失败,返回空 Vec
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ vec![] // 读取文件失败,返回空 Vec
|
|
|
+ };
|
|
|
+
|
|
|
trades.reverse();
|
|
|
info!("{} 找到 {} 条", filename, trades.len());
|
|
|
all_trades.append(&mut trades);
|
|
|
@@ -105,6 +101,30 @@ pub async fn collect_special_trades_json(start_timestamp: i64, end_timestamp: i6
|
|
|
serde_json::to_value(&all_trades).unwrap()
|
|
|
}
|
|
|
|
|
|
+// 将一个时间段范围内的所有Record返回(以json形式)
|
|
|
+pub async fn collect_records_json(start_timestamp: i64, end_timestamp: i64, exchange: &str, symbol: &str) -> Value {
|
|
|
+ let mut records = Vec::new();
|
|
|
+ let filenames = generate_filenames(start_timestamp, end_timestamp, exchange, symbol, "record");
|
|
|
+
|
|
|
+ for filename in filenames {
|
|
|
+ let file_path = PathBuf::from(filename.as_str());
|
|
|
+ let file_content = fs::read_to_string(file_path).await;
|
|
|
+
|
|
|
+ // 检查文件内容是否成功读取
|
|
|
+ if let Ok(content) = file_content {
|
|
|
+ // 尝试反序列化文件内容
|
|
|
+ if let Ok(record) = serde_json::from_str::<Record>(&content) {
|
|
|
+ info!("{} 找到 1 条", filename);
|
|
|
+ records.push(record.clone());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ records.reverse();
|
|
|
+
|
|
|
+ serde_json::to_value(&records).unwrap()
|
|
|
+}
|
|
|
+
|
|
|
#[tokio::test]
|
|
|
async fn read_test() {
|
|
|
use global::log_utils::init_log_with_info;
|