init
This commit is contained in:
@@ -27,6 +27,18 @@ pub struct UpdateMessageRequest {
|
||||
}
|
||||
|
||||
#[derive(serde::Deserialize, utoipa::IntoParams)]
|
||||
pub struct MessageFilters {
|
||||
pub struct MessageQueryParams {
|
||||
pub channel_id: Option<uuid::Uuid>,
|
||||
pub before_id: Option<Uuid>,
|
||||
pub limit: Option<u64>,
|
||||
}
|
||||
|
||||
impl Default for MessageQueryParams {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
channel_id: None,
|
||||
before_id: None,
|
||||
limit: Some(50),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use super::dto::{CreateMessageRequest, MessageFilters, MessageResponse, UpdateMessageRequest};
|
||||
use super::dto::{CreateMessageRequest, MessageQueryParams, MessageResponse, UpdateMessageRequest};
|
||||
use crate::core::state::AppState;
|
||||
use crate::http::context::CurrentUser;
|
||||
use crate::http::error::HTTPError;
|
||||
@@ -19,23 +19,16 @@ use uuid::Uuid;
|
||||
(status = 500, description = "Erreur interne du serveur")
|
||||
),
|
||||
params(
|
||||
MessageFilters
|
||||
MessageQueryParams
|
||||
),
|
||||
tag = "Messages"
|
||||
)]
|
||||
pub async fn get_all(
|
||||
State(state): State<AppState>,
|
||||
Query(filters): Query<MessageFilters>,
|
||||
Query(filters): Query<MessageQueryParams>,
|
||||
) -> Result<Json<Vec<MessageResponse>>, HTTPError> {
|
||||
let messages = if let Some(channel_id) = filters.channel_id {
|
||||
state
|
||||
.repositories
|
||||
.message
|
||||
.get_by_channel(channel_id)
|
||||
.await?
|
||||
} else {
|
||||
state.repositories.message.get_all().await?
|
||||
};
|
||||
let params = mapper::query_params_to_message_filter(filters);
|
||||
let messages = state.repositories.message.filter(params).await?;
|
||||
Ok(Json(
|
||||
messages
|
||||
.into_iter()
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
use crate::models::message;
|
||||
use crate::routes::message::dto::{CreateMessageRequest, MessageResponse, UpdateMessageRequest};
|
||||
use crate::repositories::types::MessageFilter;
|
||||
use crate::routes::message::dto::{
|
||||
CreateMessageRequest, MessageQueryParams, MessageResponse, UpdateMessageRequest,
|
||||
};
|
||||
use chrono::Utc;
|
||||
use sea_orm::Set;
|
||||
use uuid::Uuid;
|
||||
@@ -42,3 +45,11 @@ pub fn update_request_to_am(
|
||||
reply_to_id: Set(model.reply_to_id),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn query_params_to_message_filter(params: MessageQueryParams) -> MessageFilter {
|
||||
MessageFilter {
|
||||
channel_id: params.channel_id,
|
||||
before_id: params.before_id,
|
||||
limit: params.limit,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user