修改持久化实体类

This commit is contained in:
李运家 2024-05-22 15:57:52 +08:00
parent 5afea94458
commit 518d9190e1
9 changed files with 28 additions and 23 deletions

1
Cargo.lock generated
View File

@ -2498,6 +2498,7 @@ dependencies = [
"pin-project-lite",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]

View File

@ -9,7 +9,7 @@ edition = "2021"
axum = { workspace = true }
tokio = { workspace = true }
tracing = { workspace = true }
tower-http = { workspace = true }
tower-http = { workspace = true, features = ["trace"] }
validator = { workspace = true }
axum-extra = { workspace = true }

View File

@ -5,6 +5,7 @@ use validator::Validate;
use domain::dto::feedback::FeedbackAdd;
use domain::dto::pageable::PageParams;
use domain::entities::feedback;
use domain::entities::feedback::Feedback;
use library::resp::pageable::Pageable;
use library::resp::rejection::IRejection;
use library::resp::response::{ResErr, ResOK, ResResult};
@ -24,6 +25,6 @@ pub async fn add_feedback(
/// 获取反馈信息列表
pub async fn get_feedback_list_by_page(
Query(page_params): Query<PageParams>
) -> ResResult<ResOK<Pageable<feedback::Model>>> {
) -> ResResult<ResOK<Pageable<Feedback>>> {
service::feedback::get_feedback_list_by_page(page_params.page, page_params.page_size).await
}

View File

@ -4,7 +4,7 @@ use validator::Validate;
#[derive(Debug, Validate, Deserialize, Serialize)]
pub struct FeedbackAdd {
#[validate(required(message = "用户ID不能为空"))]
pub user_id: Option<u64>,
pub user_id: Option<i64>,
#[validate(required, length(min = 1, message = "反馈内容不能为空"))]
pub content: Option<String>
}

View File

@ -2,6 +2,6 @@ use serde::Deserialize;
#[derive(Deserialize)]
pub struct PageParams {
pub page: u64,
pub page_size: u64,
pub page: i64,
pub page_size: i64,
}

View File

@ -1,21 +1,23 @@
use chrono::{NaiveDateTime, Utc};
use chrono::{FixedOffset, NaiveDateTime, NaiveTime, Utc};
use serde::{Deserialize, Serialize};
use sqlx::{FromRow, PgPool};
use sqlx::postgres::types::PgTimeTz;
use sqlx::types::chrono::{self, DateTime};
use crate::db_result::CountResult;
#[derive(Debug, Clone, FromRow, serde::Serialize)]
#[derive(Debug, Clone, Deserialize, Default, Serialize)]
pub struct Feedback {
pub id: u64,
pub user_id: u64,
pub id: i64,
pub user_id: i64,
pub content: String,
pub created_at: NaiveDateTime,
}
impl Feedback {
pub async fn search_feedback(page: u64, page_size: u64, db_pool: &PgPool) -> Result<Vec<Feedback>, sqlx::Error> {
pub async fn search_feedback(page: i64, page_size: i64, db_pool: &PgPool) -> Result<Vec<Feedback>, sqlx::Error> {
sqlx::query_as!(
Feedback,
r#"select id, user_id, content, created_at from feedback limit ? offset ?"#,
r#"select id, user_id, content, created_at from feedback limit $1 offset $2"#,
page_size, page
).fetch_all(db_pool).await
}
@ -28,17 +30,17 @@ impl Feedback {
}
pub async fn add_feedback(feedback: &mut Feedback, db_pool: &PgPool) -> Result<Feedback, sqlx::Error> {
feedback.created_at = Utc::now().naive_utc();
feedback.created_at = NaiveDateTime::default();
sqlx::query_as!(
Feedback,
r#"insert into feedback
(user_id, content, created_at)
values
(?, ?, ?) returning *
($1, $2, $3) returning *
"#,
feedback.user_id,
feedback.content,
feedback.created_at
).execute(db_pool)
).fetch_one(db_pool).await
}
}

View File

@ -3,9 +3,9 @@ use sqlx::{FromRow, PgPool, QueryBuilder};
use sqlx::types::chrono::{self, DateTime};
use library::db;
#[derive(Debug, Clone, FromRow, serde::Serialize)]
#[derive(Debug, Clone, Default)]
pub struct PlayerInfo {
pub id: u64,
pub id: i64,
pub username: String,
pub email: String,
pub platform_id: String,
@ -18,7 +18,7 @@ impl PlayerInfo {
pub async fn find_by_platform_id(platform_id: &str, db_pool: &PgPool) -> Result<PlayerInfo, sqlx::Error> {
sqlx::query_as!(
PlayerInfo,
r#"select * from player_info where platform_id = ?"#,
r#"select * from player_info where platform_id = $1"#,
platform_id
)
.fetch_one(db_pool)
@ -33,13 +33,13 @@ impl PlayerInfo {
insert into player_info
(username, email, platform_id, user_type, country_code, created_at)
values
(?, ?, ?, ?, ?, ?) returning *"#,
($1, $2, $3, $4, $5, $6) returning *"#,
player_info.username,
player_info.email,
player_info.platform_id,
player_info.user_type,
player_info.country_code,
player_info.created_at,
).execute(db_pool)
).fetch_one(db_pool).await
}
}

View File

@ -8,7 +8,7 @@ use library::resp::pageable::Pageable;
use library::resp::response::{ResOK, ResResult};
/// 获取反馈信息列表
pub async fn get_feedback_list_by_page(page: u64, page_size: u64) -> ResResult<ResOK<Pageable<Feedback>>> {
pub async fn get_feedback_list_by_page(page: i64, page_size: i64) -> ResResult<ResOK<Pageable<Feedback>>> {
let feedback_list = Feedback::search_feedback(page, page_size, db!()).await.ok();
if feedback_list.is_none() {
tracing::error!("反馈信息为空");
@ -38,7 +38,7 @@ pub async fn add_feedback(req: FeedbackAdd) -> ResResult<ResOK<()>> {
..Default::default()
}, db!()).await {
Ok(feedback) => {
tracing::info!("添加反馈成功: {}" feedback)
tracing::info!("添加反馈成功: {:?}", feedback)
}
Err(err) => {
tracing::error!(error = ?err, "添加反馈信息失败");

View File

@ -1,3 +1,4 @@
use std::ptr::null;
use sqlx::Error;
use domain::entities::player_info;
use domain::dto::player_info::PlayerInfoRegister;
@ -15,7 +16,7 @@ pub async fn register(req: PlayerInfoRegister) -> ResResult<ResOK<()>> {
return Err(ErrSystem(None));
}
Ok(v) => {
if v > 0 {
if v.id > 0 {
return Err(ErrPerm(Some("用户已存在".to_string())));
}
}
@ -34,7 +35,7 @@ pub async fn register(req: PlayerInfoRegister) -> ResResult<ResOK<()>> {
}, db!()
).await {
Ok(player_info) => {
tracing::info!("添加账户成功: {}" player_info)
tracing::info!("添加账户成功: {:?}", player_info)
}
Err(err) => {
tracing::error!(error = ?err, "添加账号失败");