65 lines
1.9 KiB
Rust
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,
|
|
}
|
|
}
|