修改接口返回为NaiveDateTime
This commit is contained in:
parent
50a0799f28
commit
d9b8b38590
@ -6,7 +6,7 @@ edition = "2021"
|
||||
[dependencies]
|
||||
anyhow = { workspace = true }
|
||||
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
|
||||
serde = { workspace = true }
|
||||
serde = { workspace = true, features = ["derive"] }
|
||||
serde_json = { workspace = true }
|
||||
chrono = { version = "0.4.38", features = ["serde"] }
|
||||
axum = "0.7.5"
|
||||
|
@ -1,6 +1,6 @@
|
||||
use async_graphql::{Context, InputObject, Object, SimpleObject};
|
||||
use async_graphql::{InputType, OutputType};
|
||||
use chrono::{DateTime, Local};
|
||||
use chrono::NaiveDateTime;
|
||||
use rtss_db::common::TableColumn;
|
||||
use rtss_db::model::DraftDataColumn;
|
||||
use rtss_db::DraftDataAccessor;
|
||||
@ -282,8 +282,8 @@ pub struct DraftDataWithStringOptions {
|
||||
pub data: Option<Vec<u8>>,
|
||||
pub user_id: i32,
|
||||
pub is_shared: bool,
|
||||
pub created_at: DateTime<Local>,
|
||||
pub updated_at: DateTime<Local>,
|
||||
pub created_at: NaiveDateTime,
|
||||
pub updated_at: NaiveDateTime,
|
||||
}
|
||||
|
||||
impl From<rtss_db::model::DraftDataModel> for DraftDataWithStringOptions {
|
||||
@ -296,8 +296,8 @@ impl From<rtss_db::model::DraftDataModel> for DraftDataWithStringOptions {
|
||||
data: value.data,
|
||||
user_id: value.user_id,
|
||||
is_shared: value.is_shared,
|
||||
created_at: value.created_at,
|
||||
updated_at: value.updated_at,
|
||||
created_at: value.created_at.naive_local(),
|
||||
updated_at: value.updated_at.naive_local(),
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -312,8 +312,8 @@ pub struct DraftData<T: OutputType> {
|
||||
pub data: Option<Vec<u8>>,
|
||||
pub user_id: i32,
|
||||
pub is_shared: bool,
|
||||
pub created_at: DateTime<Local>,
|
||||
pub updated_at: DateTime<Local>,
|
||||
pub created_at: NaiveDateTime,
|
||||
pub updated_at: NaiveDateTime,
|
||||
}
|
||||
|
||||
impl<T: DataOptions> From<rtss_db::model::DraftDataModel> for DraftData<T> {
|
||||
@ -326,8 +326,8 @@ impl<T: DataOptions> From<rtss_db::model::DraftDataModel> for DraftData<T> {
|
||||
data: value.data,
|
||||
user_id: value.user_id,
|
||||
is_shared: value.is_shared,
|
||||
created_at: value.created_at,
|
||||
updated_at: value.updated_at,
|
||||
created_at: value.created_at.naive_local(),
|
||||
updated_at: value.updated_at.naive_local(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -48,8 +48,8 @@ pub async fn serve(config: ServerConfig) -> anyhow::Result<()> {
|
||||
.allow_methods([Method::GET, Method::POST]),
|
||||
);
|
||||
|
||||
debug!("Server started at http://{}", config.to_socket_addr());
|
||||
info!("GraphiQL IDE: http://localhost:{}", config.port);
|
||||
info!("Server started at http://{}", config.to_socket_addr());
|
||||
debug!("GraphiQL IDE: http://localhost:{}", config.port);
|
||||
axum::serve(
|
||||
TcpListener::bind(config.to_socket_addr()).await.unwrap(),
|
||||
app,
|
||||
|
@ -33,6 +33,7 @@ fn main() {
|
||||
&[
|
||||
"../../rtss-proto-msg/src/em_data.proto",
|
||||
"../../rtss-proto-msg/src/common.proto",
|
||||
"../../rtss-proto-msg/src/iscs_graphic_data.proto",
|
||||
],
|
||||
&["../../rtss-proto-msg/src/"],
|
||||
)
|
||||
|
@ -86,7 +86,7 @@ pub struct CommonInfo {
|
||||
pub transform: ::core::option::Option<Transform>,
|
||||
/// 子元素变换
|
||||
#[prost(message, repeated, tag = "4")]
|
||||
pub children_transform: ::prost::alloc::vec::Vec<ChildTransform>,
|
||||
pub child_transforms: ::prost::alloc::vec::Vec<ChildTransform>,
|
||||
}
|
||||
/// 数据类型
|
||||
#[derive(
|
||||
|
179
crates/rtss_dto/src/pb/iscs_graphic_data.rs
Normal file
179
crates/rtss_dto/src/pb/iscs_graphic_data.rs
Normal file
@ -0,0 +1,179 @@
|
||||
// This file is @generated by prost-build.
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct IscsGraphicStorage {
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub canvas: ::core::option::Option<super::common::Canvas>,
|
||||
#[prost(message, repeated, tag = "2")]
|
||||
pub arrows: ::prost::alloc::vec::Vec<Arrow>,
|
||||
#[prost(message, repeated, tag = "3")]
|
||||
pub iscs_texts: ::prost::alloc::vec::Vec<IscsText>,
|
||||
#[prost(message, repeated, tag = "4")]
|
||||
pub rects: ::prost::alloc::vec::Vec<Rect>,
|
||||
#[prost(message, repeated, tag = "5")]
|
||||
pub cctv_buttons: ::prost::alloc::vec::Vec<CctvButton>,
|
||||
}
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct UniqueIdOfStationLayout {
|
||||
/// 城市
|
||||
#[prost(string, tag = "1")]
|
||||
pub city: ::prost::alloc::string::String,
|
||||
/// 线路号
|
||||
#[prost(string, tag = "2")]
|
||||
pub line_id: ::prost::alloc::string::String,
|
||||
/// 地图的公里标主坐标系
|
||||
#[prost(string, tag = "3")]
|
||||
pub main_coordinate_system: ::prost::alloc::string::String,
|
||||
}
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Arrow {
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub common: ::core::option::Option<super::common::CommonInfo>,
|
||||
#[prost(string, tag = "2")]
|
||||
pub code: ::prost::alloc::string::String,
|
||||
#[prost(message, repeated, tag = "3")]
|
||||
pub points: ::prost::alloc::vec::Vec<super::common::Point>,
|
||||
}
|
||||
/// Iscs文字
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct IscsText {
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub common: ::core::option::Option<super::common::CommonInfo>,
|
||||
#[prost(string, tag = "2")]
|
||||
pub code: ::prost::alloc::string::String,
|
||||
#[prost(string, tag = "3")]
|
||||
pub content: ::prost::alloc::string::String,
|
||||
#[prost(string, tag = "4")]
|
||||
pub color: ::prost::alloc::string::String,
|
||||
#[prost(int32, tag = "5")]
|
||||
pub font_size: i32,
|
||||
}
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Rect {
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub common: ::core::option::Option<super::common::CommonInfo>,
|
||||
#[prost(string, tag = "2")]
|
||||
pub code: ::prost::alloc::string::String,
|
||||
/// 线宽
|
||||
#[prost(int32, tag = "3")]
|
||||
pub line_width: i32,
|
||||
/// 线色
|
||||
#[prost(string, tag = "4")]
|
||||
pub line_color: ::prost::alloc::string::String,
|
||||
/// 宽度
|
||||
#[prost(float, tag = "5")]
|
||||
pub width: f32,
|
||||
/// 高度
|
||||
#[prost(float, tag = "6")]
|
||||
pub height: f32,
|
||||
/// 圆角半径
|
||||
#[prost(int32, tag = "7")]
|
||||
pub radius: i32,
|
||||
/// 画第一个点的坐标
|
||||
#[prost(message, optional, tag = "8")]
|
||||
pub point: ::core::option::Option<super::common::Point>,
|
||||
}
|
||||
/// CCTV按钮
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct CctvButton {
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub common: ::core::option::Option<super::common::CommonInfo>,
|
||||
#[prost(string, tag = "2")]
|
||||
pub code: ::prost::alloc::string::String,
|
||||
#[prost(enumeration = "cctv_button::ButtonType", tag = "3")]
|
||||
pub button_type: i32,
|
||||
}
|
||||
/// Nested message and enum types in `CCTVButton`.
|
||||
pub mod cctv_button {
|
||||
#[derive(
|
||||
Clone,
|
||||
Copy,
|
||||
Debug,
|
||||
PartialEq,
|
||||
Eq,
|
||||
Hash,
|
||||
PartialOrd,
|
||||
Ord,
|
||||
::prost::Enumeration
|
||||
)]
|
||||
#[repr(i32)]
|
||||
pub enum ButtonType {
|
||||
Rect = 0,
|
||||
/// 监控样子的按钮
|
||||
Monitor = 1,
|
||||
/// 半圆样子的按钮
|
||||
Semicircle = 2,
|
||||
}
|
||||
impl ButtonType {
|
||||
/// String value of the enum field names used in the ProtoBuf definition.
|
||||
///
|
||||
/// The values are not transformed in any way and thus are considered stable
|
||||
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
|
||||
pub fn as_str_name(&self) -> &'static str {
|
||||
match self {
|
||||
ButtonType::Rect => "rect",
|
||||
ButtonType::Monitor => "monitor",
|
||||
ButtonType::Semicircle => "semicircle",
|
||||
}
|
||||
}
|
||||
/// Creates an enum from field names used in the ProtoBuf definition.
|
||||
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
|
||||
match value {
|
||||
"rect" => Some(Self::Rect),
|
||||
"monitor" => Some(Self::Monitor),
|
||||
"semicircle" => Some(Self::Semicircle),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/// 手动报警按钮
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct ManualAlarmButton {
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub common: ::core::option::Option<super::common::CommonInfo>,
|
||||
#[prost(string, tag = "2")]
|
||||
pub code: ::prost::alloc::string::String,
|
||||
}
|
||||
/// 消防栓报警按钮
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct HydrantAlarmButton {
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub common: ::core::option::Option<super::common::CommonInfo>,
|
||||
#[prost(string, tag = "2")]
|
||||
pub code: ::prost::alloc::string::String,
|
||||
}
|
||||
/// 气体灭火
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct GasExtinguishing {
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub common: ::core::option::Option<super::common::CommonInfo>,
|
||||
#[prost(string, tag = "2")]
|
||||
pub code: ::prost::alloc::string::String,
|
||||
}
|
||||
/// 烟雾探测器
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct SmokeDetector {
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub common: ::core::option::Option<super::common::CommonInfo>,
|
||||
#[prost(string, tag = "2")]
|
||||
pub code: ::prost::alloc::string::String,
|
||||
}
|
||||
/// 温度探测器
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct TemperatureDetector {
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub common: ::core::option::Option<super::common::CommonInfo>,
|
||||
#[prost(string, tag = "2")]
|
||||
pub code: ::prost::alloc::string::String,
|
||||
}
|
@ -12,8 +12,8 @@ CREATE TABLE
|
||||
default_release_data_id INT NULL, -- 默认发布数据id
|
||||
user_id INT NOT NULL, -- 创建用户id
|
||||
is_shared BOOLEAN NOT NULL DEFAULT FALSE, -- 是否共享
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT 'now()', -- 创建时间
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT 'now()', -- 更新时间
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 更新时间
|
||||
UNIQUE (name, user_id) -- 一个用户的草稿名称唯一
|
||||
);
|
||||
|
||||
@ -58,8 +58,8 @@ CREATE TABLE
|
||||
used_version_id INT NULL, -- 使用的版本数据id
|
||||
user_id INT NOT NULL, -- 发布/更新用户id
|
||||
is_published BOOLEAN NOT NULL DEFAULT TRUE, -- 是否上架
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT 'now()', -- 创建时间
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT 'now()' -- 更新时间
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP -- 更新时间
|
||||
);
|
||||
|
||||
-- 注释发布数据表
|
||||
@ -93,7 +93,7 @@ CREATE TABLE
|
||||
version SERIAL NOT NULL, -- 版本号
|
||||
description TEXT NOT NULL, -- 版本描述
|
||||
user_id INT NOT NULL, -- 发布用户id
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT 'now()', -- 创建时间
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
|
||||
FOREIGN KEY (release_data_id) REFERENCES rtss.release_data (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
@ -131,8 +131,8 @@ CREATE TABLE
|
||||
is_published BOOLEAN NOT NULL DEFAULT TRUE, -- 是否上架
|
||||
creator_id INT NOT NULL, -- 创建用户id
|
||||
updater_id INT NOT NULL, -- 更新用户id
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT 'now()', -- 创建时间
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT 'now()' -- 更新时间
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP -- 更新时间
|
||||
);
|
||||
|
||||
-- 注释仿真feature表
|
||||
@ -182,8 +182,8 @@ CREATE TABLE
|
||||
is_published BOOLEAN NOT NULL DEFAULT TRUE, -- 是否上架
|
||||
creator_id INT NOT NULL, -- 创建用户id
|
||||
updater_id INT NOT NULL, -- 更新用户id
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT 'now()', -- 创建时间
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT 'now()' -- 更新时间
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP -- 更新时间
|
||||
);
|
||||
|
||||
-- 注释仿真feature group表
|
||||
@ -224,8 +224,8 @@ CREATE TABLE
|
||||
user_id INT NOT NULL, -- 用户id
|
||||
feature_id INT NOT NULL, -- 仿真feature id
|
||||
config BYTEA NOT NULL, -- 配置
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT 'now()', -- 创建时间
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT 'now()', -- 更新时间
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 更新时间
|
||||
FOREIGN KEY (feature_id) REFERENCES rtss.feature (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit a1622410919b58683bc0ec059b4f5de575583c13
|
||||
Subproject commit 1672a8c0e2b41c4076c1dc9ec852f425dcba21c3
|
@ -27,7 +27,6 @@ pub struct ServerOpts {
|
||||
|
||||
impl CmdExecutor for ServerOpts {
|
||||
async fn execute(&self) -> anyhow::Result<()> {
|
||||
println!("ServerOpts: {:?}", self);
|
||||
let app_config =
|
||||
app_config::AppConfig::new(&self.config_path).expect("Failed to load app config");
|
||||
let log: rtss_log::Logging = app_config.log.into();
|
||||
|
@ -22,7 +22,6 @@ impl CmdExecutor for MigrateOpts {
|
||||
async fn execute(&self) -> anyhow::Result<()> {
|
||||
let app_config =
|
||||
app_config::AppConfig::new(&self.config_path).expect("Failed to load app config");
|
||||
println!("{:?}", app_config);
|
||||
rtss_db::run_migrations(&app_config.database.url).await
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user