Adding code for create sme
This commit is contained in:
@@ -101,3 +101,108 @@ async fn parse_row(
|
||||
user_id,
|
||||
})
|
||||
}
|
||||
|
||||
pub mod sched_msg_event {
|
||||
use sqlx::Row;
|
||||
|
||||
pub async fn insert(
|
||||
pool: &sqlx::PgPool,
|
||||
scheduled_message_event: &textsender_models::message::scheduling::ScheduledMessageEvent,
|
||||
) -> Result<(uuid::Uuid, time::OffsetDateTime), sqlx::Error> {
|
||||
match sqlx::query(
|
||||
r#"
|
||||
INSERT INTO "scheduled_message_events" (contact_id, message_id, scheduled_message_id)
|
||||
VALUES($1, $2, $3) RETURNING id, created;
|
||||
"#,
|
||||
)
|
||||
.bind(&scheduled_message_event.contact_id)
|
||||
.bind(&scheduled_message_event.message_id)
|
||||
.bind(&scheduled_message_event.scheduled_message_id)
|
||||
.fetch_one(pool)
|
||||
.await
|
||||
{
|
||||
Ok(row) => {
|
||||
let id: uuid::Uuid = row.try_get("id")?;
|
||||
let created: time::OffsetDateTime = row.try_get("created")?;
|
||||
Ok((id, created))
|
||||
}
|
||||
Err(_) => Err(sqlx::Error::RowNotFound),
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn get(
|
||||
pool: &sqlx::PgPool,
|
||||
id: &uuid::Uuid,
|
||||
) -> Result<textsender_models::message::scheduling::ScheduledMessageEvent, sqlx::Error> {
|
||||
match sqlx::query(
|
||||
r#"
|
||||
SELECT id, contact_id, message_id, scheduled_message_id, created FROM "scheduled_message_events"
|
||||
WHERE
|
||||
id = $1;
|
||||
"#,
|
||||
)
|
||||
.bind(id)
|
||||
.fetch_one(pool)
|
||||
.await
|
||||
{
|
||||
Ok(row) => match parse_row(&row).await {
|
||||
Ok(scheduled_message_event) => Ok(scheduled_message_event),
|
||||
Err(err) => Err(err),
|
||||
},
|
||||
Err(_) => Err(sqlx::Error::RowNotFound),
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn get_with_scheduled_message_id(
|
||||
pool: &sqlx::PgPool,
|
||||
scheduled_message_id: &uuid::Uuid,
|
||||
) -> Result<Vec<textsender_models::message::scheduling::ScheduledMessageEvent>, sqlx::Error> {
|
||||
match sqlx::query(
|
||||
r#"
|
||||
SELECT id, contact_id, message_id, scheduled_message_id, created FROM "scheduled_message_events"
|
||||
WHERE
|
||||
scheduled_message_id = $1;
|
||||
"#,
|
||||
)
|
||||
.bind(&scheduled_message_id)
|
||||
.fetch_all(pool)
|
||||
.await
|
||||
{
|
||||
Ok(rows) => {
|
||||
let mut scheduled_message_events: Vec<textsender_models::message::scheduling::ScheduledMessageEvent> =
|
||||
Vec::new();
|
||||
for row in rows {
|
||||
match parse_row(&row).await {
|
||||
Ok(scheduled_message_event) => {
|
||||
scheduled_message_events.push(scheduled_message_event);
|
||||
}
|
||||
Err(err) => {
|
||||
return Err(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Ok(scheduled_message_events)
|
||||
}
|
||||
Err(_) => Err(sqlx::Error::RowNotFound),
|
||||
}
|
||||
}
|
||||
|
||||
async fn parse_row(
|
||||
row: &sqlx::postgres::PgRow,
|
||||
) -> Result<textsender_models::message::scheduling::ScheduledMessageEvent, sqlx::Error> {
|
||||
let id: uuid::Uuid = row.try_get("id")?;
|
||||
let contact_id: uuid::Uuid = row.try_get("contact_id")?;
|
||||
let message_id: uuid::Uuid = row.try_get("message_id")?;
|
||||
let scheduled_message_id: uuid::Uuid = row.try_get("scheduled_message_id")?;
|
||||
let created: time::OffsetDateTime = row.try_get("created")?;
|
||||
|
||||
Ok(textsender_models::message::scheduling::ScheduledMessageEvent {
|
||||
id,
|
||||
contact_id,
|
||||
message_id,
|
||||
scheduled_message_id,
|
||||
created: Some(created),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user