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, ) -> 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, } }