Files
oxspeak_server/src/routes/message/mapper.rs
T
2026-08-09 10:30:54 +02:00

65 lines
1.9 KiB
Rust

use crate::domain::dto::message::{
CreateMessageRequest, MessageQueryParams, MessageResponse, UpdateMessageRequest,
};
use crate::models::message;
use crate::repositories::types::MessageFilter;
use chrono::Utc;
use sea_orm::Set;
use uuid::Uuid;
pub fn message_model_to_message_response(model: message::Model) -> MessageResponse {
message_model_to_message_response_with_server_id(model, None)
}
pub fn message_model_to_message_response_with_server_id(
model: message::Model,
server_id: Option<Uuid>,
) -> MessageResponse {
MessageResponse {
id: model.id,
server_id,
channel_id: model.channel_id,
user_id: model.user_id,
content: model.content,
created_at: model.created_at,
updated_at: model.updated_at,
reply_to_id: model.reply_to_id,
}
}
pub fn create_request_to_am(user_id: Uuid, payload: CreateMessageRequest) -> message::ActiveModel {
message::ActiveModel {
id: Set(Uuid::now_v7()),
channel_id: Set(payload.channel_id),
user_id: Set(user_id),
content: Set(payload.content),
created_at: Set(Utc::now()),
updated_at: Set(None),
reply_to_id: Set(payload.reply_to_id),
}
}
pub fn update_request_to_am(
model: message::Model,
payload: UpdateMessageRequest,
) -> message::ActiveModel {
message::ActiveModel {
id: Set(model.id),
channel_id: Set(model.channel_id),
user_id: Set(model.user_id),
content: Set(payload.content),
created_at: Set(model.created_at),
updated_at: Set(Some(Utc::now())),
reply_to_id: Set(model.reply_to_id),
}
}
pub fn query_params_to_message_filter(params: MessageQueryParams) -> MessageFilter {
MessageFilter {
channel_id: Some(params.channel_id),
before_id: params.before_id,
after_id: params.after_id,
limit: params.limit,
}
}