weather data upload test
This commit is contained in:
29
Cargo.lock
generated
29
Cargo.lock
generated
@@ -593,7 +593,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
|
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"windows-sys 0.59.0",
|
"windows-sys 0.61.0",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "error"
|
||||||
|
version = "0.1.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a6e606f14042bb87cc02ef6a14db6c90ab92ed6f62d87e69377bc759fd7987cc"
|
||||||
|
dependencies = [
|
||||||
|
"traitobject",
|
||||||
|
"typeable",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1812,6 +1822,7 @@ dependencies = [
|
|||||||
"actix-web",
|
"actix-web",
|
||||||
"chrono",
|
"chrono",
|
||||||
"dotenvy",
|
"dotenvy",
|
||||||
|
"error",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
@@ -1834,7 +1845,7 @@ dependencies = [
|
|||||||
"errno",
|
"errno",
|
||||||
"libc",
|
"libc",
|
||||||
"linux-raw-sys",
|
"linux-raw-sys",
|
||||||
"windows-sys 0.59.0",
|
"windows-sys 0.61.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2349,7 +2360,7 @@ dependencies = [
|
|||||||
"getrandom 0.3.3",
|
"getrandom 0.3.3",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"rustix",
|
"rustix",
|
||||||
"windows-sys 0.59.0",
|
"windows-sys 0.61.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2567,12 +2578,24 @@ dependencies = [
|
|||||||
"once_cell",
|
"once_cell",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "traitobject"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "04a79e25382e2e852e8da874249358d382ebaf259d0d34e75d8db16a7efabbc7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "try-lock"
|
name = "try-lock"
|
||||||
version = "0.2.5"
|
version = "0.2.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "typeable"
|
||||||
|
version = "0.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "typenum"
|
name = "typenum"
|
||||||
version = "1.18.0"
|
version = "1.18.0"
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ edition = "2024"
|
|||||||
actix-web = "4.11.0"
|
actix-web = "4.11.0"
|
||||||
chrono = {version = "0.4.41", features=["serde"]}
|
chrono = {version = "0.4.41", features=["serde"]}
|
||||||
dotenvy = "0.15.7"
|
dotenvy = "0.15.7"
|
||||||
|
error = "0.1.9"
|
||||||
reqwest = { version = "0.12.23", features=["json"]}
|
reqwest = { version = "0.12.23", features=["json"]}
|
||||||
serde = { version = "1.0.219", features = ["derive"] }
|
serde = { version = "1.0.219", features = ["derive"] }
|
||||||
serde_json = "1.0.143"
|
serde_json = "1.0.143"
|
||||||
|
|||||||
115
src/main.rs
115
src/main.rs
@@ -1,4 +1,4 @@
|
|||||||
use actix_web::{App, HttpResponse, HttpServer, Responder, post, web};
|
use actix_web::{App, HttpResponse, HttpServer, Responder, Result, post, web};
|
||||||
use db::create_pool;
|
use db::create_pool;
|
||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
@@ -7,6 +7,118 @@ use sqlx::postgres::PgPool;
|
|||||||
mod db;
|
mod db;
|
||||||
mod models;
|
mod models;
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
|
pub struct WeatherData {
|
||||||
|
#[serde(rename = "areaType")]
|
||||||
|
area_type: String,
|
||||||
|
|
||||||
|
#[serde(rename = "assignmentnumber")]
|
||||||
|
assignment_number: String,
|
||||||
|
|
||||||
|
#[serde(rename = "atmosphericStability")]
|
||||||
|
atmospheric_stability: String,
|
||||||
|
|
||||||
|
#[serde(rename = "averageWindDirection")]
|
||||||
|
average_wind_direction: f64,
|
||||||
|
|
||||||
|
#[serde(rename = "averageWindSpeed")]
|
||||||
|
average_wind_speed: f64,
|
||||||
|
|
||||||
|
#[serde(rename = "calculatedwindspeed")]
|
||||||
|
calculated_wind_speed: f64,
|
||||||
|
|
||||||
|
#[serde(rename = "cloudIndex")]
|
||||||
|
cloud_index: String,
|
||||||
|
|
||||||
|
#[serde(rename = "convertedWindSpeed")]
|
||||||
|
converted_wind_speed: f64,
|
||||||
|
|
||||||
|
date: String,
|
||||||
|
|
||||||
|
#[serde(rename = "daySinceJanFirst")]
|
||||||
|
day_since_jan_first: i32,
|
||||||
|
|
||||||
|
#[serde(rename = "hasMeasuredWindSpeed")]
|
||||||
|
has_measured_wind_speed: bool,
|
||||||
|
|
||||||
|
hours: i32,
|
||||||
|
|
||||||
|
#[serde(rename = "inspectiontype")]
|
||||||
|
inspection_type: String,
|
||||||
|
|
||||||
|
latitude: f64,
|
||||||
|
longitude: f64,
|
||||||
|
|
||||||
|
#[serde(rename = "lowCloudiness")]
|
||||||
|
low_cloudiness: String,
|
||||||
|
|
||||||
|
#[serde(rename = "measuredWindSpeed")]
|
||||||
|
measured_wind_speed: f64,
|
||||||
|
|
||||||
|
#[serde(rename = "measurementHeight")]
|
||||||
|
measurement_height: f64,
|
||||||
|
|
||||||
|
min: i32,
|
||||||
|
openid: String,
|
||||||
|
|
||||||
|
#[serde(rename = "overallCloudiness")]
|
||||||
|
overall_cloudiness: String,
|
||||||
|
|
||||||
|
#[serde(rename = "overallSuitability")]
|
||||||
|
overall_suitability: String,
|
||||||
|
|
||||||
|
#[serde(rename = "pointWindSpeed")]
|
||||||
|
point_wind_speed: f64,
|
||||||
|
|
||||||
|
#[serde(rename = "solarDeclination")]
|
||||||
|
solar_declination: f64,
|
||||||
|
|
||||||
|
#[serde(rename = "solarRadiationLevel")]
|
||||||
|
solar_radiation_level: f64,
|
||||||
|
|
||||||
|
#[serde(rename = "suitabilityDegree")]
|
||||||
|
suitability_degree: String,
|
||||||
|
|
||||||
|
#[serde(rename = "sunAltitude")]
|
||||||
|
sun_altitude: f64,
|
||||||
|
|
||||||
|
theta: f64,
|
||||||
|
title: String,
|
||||||
|
|
||||||
|
#[serde(rename = "windDirection")]
|
||||||
|
wind_direction: Vec<f64>,
|
||||||
|
|
||||||
|
#[serde(rename = "windDirectionStandardDeviation")]
|
||||||
|
wind_direction_standard_deviation: f64,
|
||||||
|
|
||||||
|
#[serde(rename = "windDirectionSuitability")]
|
||||||
|
wind_direction_suitability: String,
|
||||||
|
|
||||||
|
#[serde(rename = "windSpeed")]
|
||||||
|
wind_speed: Vec<f64>,
|
||||||
|
|
||||||
|
#[serde(rename = "windSpeedSuitability")]
|
||||||
|
wind_speed_suitability: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[post("/weather-test")]
|
||||||
|
async fn post_weather_data(data: web::Json<WeatherData>) -> impl Responder {
|
||||||
|
// 在这里处理接收到的数据
|
||||||
|
println!("Received weather data: {:#?}", data);
|
||||||
|
|
||||||
|
// 示例:访问特定字段
|
||||||
|
println!("Area Type: {}", data.area_type);
|
||||||
|
println!("Wind Speeds: {:?}", data.wind_speed);
|
||||||
|
println!("Location: ({}, {})", data.latitude, data.longitude);
|
||||||
|
|
||||||
|
// 返回成功响应
|
||||||
|
web::Json(serde_json::json!({
|
||||||
|
"status": "success",
|
||||||
|
"message": "Weather data received successfully",
|
||||||
|
"received_assignment": data.assignment_number
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
// 定义请求体结构
|
// 定义请求体结构
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
struct OpenIdRequest {
|
struct OpenIdRequest {
|
||||||
@@ -214,6 +326,7 @@ fn create_server_config(
|
|||||||
.app_data(web::Data::new(http_client))
|
.app_data(web::Data::new(http_client))
|
||||||
.service(get_user_id)
|
.service(get_user_id)
|
||||||
.service(get_openid)
|
.service(get_openid)
|
||||||
|
.service(post_weather_data)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[actix_web::main]
|
#[actix_web::main]
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use chrono::NaiveDate;
|
use chrono::NaiveDate;
|
||||||
use serde::Serialize;
|
use serde::{Serialize};
|
||||||
use sqlx::FromRow; // 处理日期类型
|
use sqlx::FromRow; // 处理日期类型
|
||||||
|
|
||||||
#[derive(Debug, Serialize, FromRow)]
|
#[derive(Debug, Serialize, FromRow)]
|
||||||
|
|||||||
Reference in New Issue
Block a user