use chrono::{DateTime, Utc}; use eyre::Result; use foxchat::model::http::channel::CreateMessageParams; use sqlx::PgExecutor; use ulid::Ulid; pub struct Message { pub id: String, pub channel_id: String, pub author_id: String, pub updated_at: DateTime, pub content: String, } pub async fn create_message( executor: impl PgExecutor<'_>, channel_id: &str, user_id: &str, params: CreateMessageParams, ) -> Result { let message = sqlx::query_as!( Message, "insert into messages (id, channel_id, author_id, content) values ($1, $2, $3, $4) returning *", Ulid::new().to_string(), channel_id, user_id, params.content, ) .fetch_one(executor) .await?; Ok(message) }