From bf6045ece2c1dbc3f19d295c3b13ca7920df1c89 Mon Sep 17 00:00:00 2001 From: Milky0217 Date: Tue, 23 Sep 2025 10:19:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86WeatherData=E7=A7=BB=E5=88=B0models.rs?= =?UTF-8?q?=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 95 +--------------------------------- src/models.rs | 137 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 96 insertions(+), 136 deletions(-) diff --git a/src/main.rs b/src/main.rs index 12ae045..47254d0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,4 @@ use actix_web::{App, HttpResponse, HttpServer, Responder, Result, post, web}; -use chrono::NaiveDate; use db::create_pool; use reqwest::Client; use serde::{Deserialize, Serialize}; @@ -8,99 +7,7 @@ use sqlx::postgres::PgPool; mod db; 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: NaiveDate, - - #[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, - - #[serde(rename = "windDirectionStandardDeviation")] - wind_direction_standard_deviation: f64, - - #[serde(rename = "windDirectionSuitability")] - wind_direction_suitability: String, - - #[serde(rename = "windSpeed")] - wind_speed: Vec, - - #[serde(rename = "windSpeedSuitability")] - wind_speed_suitability: String, -} +use models::WeatherData; // 定义请求体结构 #[derive(Debug, Deserialize)] diff --git a/src/models.rs b/src/models.rs index 04c117b..7ea10da 100644 --- a/src/models.rs +++ b/src/models.rs @@ -1,7 +1,101 @@ use chrono::NaiveDate; -use serde::{Serialize}; +use serde::{Deserialize, Serialize}; use sqlx::FromRow; // 处理日期类型 +#[derive(Debug, Deserialize, Serialize)] +pub struct WeatherData { + #[serde(rename = "areaType")] + pub area_type: String, + + #[serde(rename = "assignmentnumber")] + pub assignment_number: String, + + #[serde(rename = "atmosphericStability")] + pub atmospheric_stability: String, + + #[serde(rename = "averageWindDirection")] + pub average_wind_direction: f64, + + #[serde(rename = "averageWindSpeed")] + pub average_wind_speed: f64, + + #[serde(rename = "calculatedwindspeed")] + pub calculated_wind_speed: f64, + + #[serde(rename = "cloudIndex")] + pub cloud_index: String, + + #[serde(rename = "convertedWindSpeed")] + pub converted_wind_speed: f64, + + pub date: NaiveDate, + + #[serde(rename = "daySinceJanFirst")] + pub day_since_jan_first: i32, + + #[serde(rename = "hasMeasuredWindSpeed")] + pub has_measured_wind_speed: bool, + + pub hours: i32, + + #[serde(rename = "inspectiontype")] + pub inspection_type: String, + + pub latitude: f64, + pub longitude: f64, + + #[serde(rename = "lowCloudiness")] + pub low_cloudiness: String, + + #[serde(rename = "measuredWindSpeed")] + pub measured_wind_speed: f64, + + #[serde(rename = "measurementHeight")] + pub measurement_height: f64, + + pub min: i32, + pub openid: String, + + #[serde(rename = "overallCloudiness")] + pub overall_cloudiness: String, + + #[serde(rename = "overallSuitability")] + pub overall_suitability: String, + + #[serde(rename = "pointWindSpeed")] + pub point_wind_speed: f64, + + #[serde(rename = "solarDeclination")] + pub solar_declination: f64, + + #[serde(rename = "solarRadiationLevel")] + pub solar_radiation_level: f64, + + #[serde(rename = "suitabilityDegree")] + pub suitability_degree: String, + + #[serde(rename = "sunAltitude")] + pub sun_altitude: f64, + + pub theta: f64, + pub title: String, + + #[serde(rename = "windDirection")] + pub wind_direction: Vec, + + #[serde(rename = "windDirectionStandardDeviation")] + pub wind_direction_standard_deviation: f64, + + #[serde(rename = "windDirectionSuitability")] + pub wind_direction_suitability: String, + + #[serde(rename = "windSpeed")] + pub wind_speed: Vec, + + #[serde(rename = "windSpeedSuitability")] + pub wind_speed_suitability: String, +} + #[derive(Debug, Serialize, FromRow)] pub struct User { pub id: i32, @@ -19,44 +113,3 @@ pub struct User { #[sqlx(rename = "desc")] pub description: Option, } - -#[derive(Debug, Serialize, FromRow)] -pub struct WeatherData { - pub id: i32, - pub user_id: i32, - pub title: Option, - #[serde(rename = "date")] - #[sqlx(rename = "date")] - pub record_date: Option, // 避免与关键字冲突 - pub hour: Option, - pub min: Option, - pub longitude: Option, - pub latitude: Option, - pub daysincejanfirst: Option, - pub theta: Option, - pub solardeclination: Option, - pub sunaltitude: Option, - pub overallcloudiness: Option, - pub lowcloudiness: Option, - pub cloudindex: Option, - pub solarradiationlevel: Option, - pub hasmeasuredwindspeed: Option, - pub measuredwindspeed: Option, - pub convertedwindspeed: Option, - pub measurementheight: Option, - pub areatype: Option, - pub pointwindspeed: Option, - pub atmosphericstability: Option, - pub suitabilitydegree: Option, - pub winddirection: Option, // JSONB类型 - pub averagewinddirection: Option, - pub winddirectionstandarddeviation: Option, - pub windspeed: Option, // JSONB类型 - pub averagewindspeed: Option, - pub windspeedsuitability: Option, - pub winddirectionsuitability: Option, - pub overallsuitability: Option, - pub inspectiontype: Option, - pub assignmentnumber: Option, - pub calculatedwindspeed: Option, -}