Updating name references for library

This commit is contained in:
2026-07-13 17:41:03 -04:00
parent f18359411d
commit 2322df21f7
15 changed files with 96 additions and 91 deletions
Generated
+17 -1
View File
@@ -2230,6 +2230,22 @@ dependencies = [
"windows-sys 0.61.2", "windows-sys 0.61.2",
] ]
[[package]]
name = "schedtxt_models"
version = "0.5.3"
source = "git+ssh://git@git.kundeng.us/phoenix/schedtxt_models.git?tag=v0.5.3#597af4e84c082bb437cc94817bb19592614681a5"
dependencies = [
"const_format",
"dotenvy",
"josekit",
"serde",
"serde_json",
"sqlx",
"time",
"utoipa",
"uuid",
]
[[package]] [[package]]
name = "scopeguard" name = "scopeguard"
version = "1.2.0" version = "1.2.0"
@@ -2781,11 +2797,11 @@ dependencies = [
"axum-extra", "axum-extra",
"josekit", "josekit",
"jsonwebtoken", "jsonwebtoken",
"schedtxt_models",
"serde", "serde",
"serde_json", "serde_json",
"sqlx", "sqlx",
"swoosh", "swoosh",
"textsender_models",
"time", "time",
"tokio", "tokio",
"tower", "tower",
+1 -1
View File
@@ -18,7 +18,7 @@ time = { version = "0.3.53", features = ["formatting", "macros", "parsing", "ser
jsonwebtoken = { version = "10.4.0", features = ["rust_crypto"] } jsonwebtoken = { version = "10.4.0", features = ["rust_crypto"] }
utoipa = { version = "5.5.0", features = ["axum_extras"] } utoipa = { version = "5.5.0", features = ["axum_extras"] }
utoipa-swagger-ui = { version = "9.0.2", features = ["axum"] } utoipa-swagger-ui = { version = "9.0.2", features = ["axum"] }
textsender_models = { git = "ssh://git@git.kundeng.us/phoenix/textsender_models.git", tag = "v0.5.2" } schedtxt_models = { git = "ssh://git@git.kundeng.us/phoenix/schedtxt_models.git", tag = "v0.5.3" }
swoosh = { git = "ssh://git@git.kundeng.us/phoenix/swoosh.git", tag = "v0.5.3" } swoosh = { git = "ssh://git@git.kundeng.us/phoenix/swoosh.git", tag = "v0.5.3" }
[dev-dependencies] [dev-dependencies]
+2 -2
View File
@@ -36,11 +36,11 @@ pub async fn auth<B>(
(StatusCode::UNAUTHORIZED, Json(json_error)) (StatusCode::UNAUTHORIZED, Json(json_error))
})?; })?;
let secret_key = textsender_models::envy::environment::get_secret_main_key().value; let secret_key = schedtxt_models::envy::environment::get_secret_main_key().value;
let mut validation = Validation::new(jsonwebtoken::Algorithm::HS256); let mut validation = Validation::new(jsonwebtoken::Algorithm::HS256);
validation.set_audience(&["textsender"]); // Must match exactly what's in the token validation.set_audience(&["textsender"]); // Must match exactly what's in the token
let _claims = decode::<textsender_models::token::Claims>( let _claims = decode::<schedtxt_models::token::Claims>(
&token, &token,
&DecodingKey::from_secret(secret_key.as_ref()), &DecodingKey::from_secret(secret_key.as_ref()),
&validation, &validation,
+2 -12
View File
@@ -49,7 +49,7 @@ pub mod response {
#[derive(Debug, Default, Deserialize, Serialize, ToSchema)] #[derive(Debug, Default, Deserialize, Serialize, ToSchema)]
pub struct AddContactResponse { pub struct AddContactResponse {
pub message: String, pub message: String,
pub data: Vec<textsender_models::contact::Contact>, pub data: Vec<schedtxt_models::contact::Contact>,
} }
pub use AddContactResponse as GetContactResponse; pub use AddContactResponse as GetContactResponse;
@@ -69,19 +69,9 @@ pub mod response {
pub new_lastname: Option<String>, pub new_lastname: Option<String>,
pub new_nickname: Option<String>, pub new_nickname: Option<String>,
} }
/*
#[derive(Debug, Default, Deserialize, Serialize, ToSchema)]
pub struct GetContactResponse {
pub message: String,
pub data: Vec<textsender_models::contact::Contact>,
}
*/
} }
pub mod endpoint { pub mod endpoint {
// use axum::{Json, response::IntoResponse};
use crate::repo::contact as contact_repo; use crate::repo::contact as contact_repo;
/// Endpoint to create Contact /// Endpoint to create Contact
@@ -126,7 +116,7 @@ pub mod endpoint {
sqlx::Error::RowNotFound => { sqlx::Error::RowNotFound => {
println!("Good to create"); println!("Good to create");
// Put code here // Put code here
let mut contact = textsender_models::contact::Contact { let mut contact = schedtxt_models::contact::Contact {
firstname: payload.firstname, firstname: payload.firstname,
lastname: payload.lastname, lastname: payload.lastname,
phone_number: payload.phone_number, phone_number: payload.phone_number,
+6 -6
View File
@@ -23,7 +23,7 @@ pub mod response {
#[derive(Debug, Default, Deserialize, Serialize, ToSchema)] #[derive(Debug, Default, Deserialize, Serialize, ToSchema)]
pub struct InstantMessageResponse { pub struct InstantMessageResponse {
pub message: String, pub message: String,
pub data: Vec<textsender_models::message::event::MessageEventResponse>, pub data: Vec<schedtxt_models::message::event::MessageEventResponse>,
} }
} }
@@ -57,7 +57,7 @@ pub mod endpoint {
let mut response = super::response::InstantMessageResponse::default(); let mut response = super::response::InstantMessageResponse::default();
if payload.is_valid() { if payload.is_valid() {
let mut contacts: Vec<textsender_models::contact::Contact> = Vec::new(); let mut contacts: Vec<schedtxt_models::contact::Contact> = Vec::new();
for contact_id in &payload.contact_ids { for contact_id in &payload.contact_ids {
match contact_repo::get(&pool, contact_id).await { match contact_repo::get(&pool, contact_id).await {
@@ -81,7 +81,7 @@ pub mod endpoint {
match message_repo::get(&pool, &payload.message_id).await { match message_repo::get(&pool, &payload.message_id).await {
Ok(message) => { Ok(message) => {
println!("Valid message"); println!("Valid message");
let t_config = match textsender_models::config::auxiliary::load_config() { let t_config = match schedtxt_models::config::auxiliary::load_config() {
Ok(config) => config, Ok(config) => config,
Err(err) => { Err(err) => {
eprintln!("Error: {err:?}"); eprintln!("Error: {err:?}");
@@ -93,7 +93,7 @@ pub mod endpoint {
} }
}; };
let mut results: Vec< let mut results: Vec<
textsender_models::message::event::MessageEventResponse, schedtxt_models::message::event::MessageEventResponse,
> = Vec::new(); > = Vec::new();
let pp = swoosh::twilio::types::Parameters { let pp = swoosh::twilio::types::Parameters {
schedule: false, schedule: false,
@@ -114,11 +114,11 @@ pub mod endpoint {
match sendmsg.send_message(&pp).await { match sendmsg.send_message(&pp).await {
Ok(result) => { Ok(result) => {
let val = swoosh::twilio::api::response_to_json(result).await; let val = swoosh::twilio::api::response_to_json(result).await;
let mer = textsender_models::message::event::MessageEventResponse { let mer = schedtxt_models::message::event::MessageEventResponse {
user_id: payload.user_id, user_id: payload.user_id,
// TODO: Make this more accurate // TODO: Make this more accurate
sent: Some(time::OffsetDateTime::now_utc()), sent: Some(time::OffsetDateTime::now_utc()),
status: String::from(textsender_models::message::event::MESSAGE_EVENT_RESPONSE_STATUS_INSTANT), status: String::from(schedtxt_models::message::event::MESSAGE_EVENT_RESPONSE_STATUS_INSTANT),
contact_id: contact.id.unwrap(), contact_id: contact.id.unwrap(),
message_id: message.id.unwrap(), message_id: message.id.unwrap(),
response: val, response: val,
+2 -2
View File
@@ -40,7 +40,7 @@ pub mod response {
#[derive(Debug, Default, Deserialize, Serialize, ToSchema)] #[derive(Debug, Default, Deserialize, Serialize, ToSchema)]
pub struct RecordMessageEventResponse { pub struct RecordMessageEventResponse {
pub message: String, pub message: String,
pub data: Vec<textsender_models::message::event::MessageEventResponse>, pub data: Vec<schedtxt_models::message::event::MessageEventResponse>,
} }
pub use RecordMessageEventResponse as GetMERResponse; pub use RecordMessageEventResponse as GetMERResponse;
@@ -74,7 +74,7 @@ pub mod endpoint {
let mut response = super::response::RecordMessageEventResponse::default(); let mut response = super::response::RecordMessageEventResponse::default();
if payload.is_valid() { if payload.is_valid() {
let mut mer = textsender_models::message::event::MessageEventResponse { let mut mer = schedtxt_models::message::event::MessageEventResponse {
scheduled_message_event_id: Some(payload.scheduled_message_event_id), scheduled_message_event_id: Some(payload.scheduled_message_event_id),
user_id: payload.user_id, user_id: payload.user_id,
sent: payload.sent, sent: payload.sent,
+2 -2
View File
@@ -31,7 +31,7 @@ pub mod response {
#[derive(Debug, Default, Deserialize, Serialize, ToSchema)] #[derive(Debug, Default, Deserialize, Serialize, ToSchema)]
pub struct AddMessageResponse { pub struct AddMessageResponse {
pub message: String, pub message: String,
pub data: Vec<textsender_models::message::Message>, pub data: Vec<schedtxt_models::message::Message>,
} }
pub use AddMessageResponse as GetMessageResponse; pub use AddMessageResponse as GetMessageResponse;
@@ -65,7 +65,7 @@ pub mod endpoint {
let mut response = super::response::AddMessageResponse::default(); let mut response = super::response::AddMessageResponse::default();
if payload.is_valid() { if payload.is_valid() {
let mut msg = textsender_models::message::Message { let mut msg = schedtxt_models::message::Message {
content: payload.content, content: payload.content,
user_id: Some(payload.user_id), user_id: Some(payload.user_id),
..Default::default() ..Default::default()
+10 -10
View File
@@ -52,10 +52,10 @@ pub mod request {
impl UpdateScheduledMessageStatusRequest { impl UpdateScheduledMessageStatusRequest {
pub fn is_valid(&self) -> bool { pub fn is_valid(&self) -> bool {
if !self.status.is_empty() || !self.scheduled_message_id.is_nil() { if !self.status.is_empty() || !self.scheduled_message_id.is_nil() {
self.status == textsender_models::message::scheduling::PENDING self.status == schedtxt_models::message::scheduling::PENDING
|| self.status == textsender_models::message::scheduling::READY || self.status == schedtxt_models::message::scheduling::READY
|| self.status == textsender_models::message::scheduling::PROCESSING || self.status == schedtxt_models::message::scheduling::PROCESSING
|| self.status == textsender_models::message::scheduling::DONE || self.status == schedtxt_models::message::scheduling::DONE
} else { } else {
false false
} }
@@ -70,19 +70,19 @@ pub mod response {
#[derive(Debug, Default, Deserialize, Serialize, ToSchema)] #[derive(Debug, Default, Deserialize, Serialize, ToSchema)]
pub struct ScheduleMessageResponse { pub struct ScheduleMessageResponse {
pub message: String, pub message: String,
pub data: Vec<textsender_models::message::scheduling::ScheduledMessage>, pub data: Vec<schedtxt_models::message::scheduling::ScheduledMessage>,
} }
#[derive(Debug, Default, Deserialize, Serialize, ToSchema)] #[derive(Debug, Default, Deserialize, Serialize, ToSchema)]
pub struct GetScheduledMessageResponse { pub struct GetScheduledMessageResponse {
pub message: String, pub message: String,
pub data: Vec<textsender_models::message::scheduling::ScheduledMessage>, pub data: Vec<schedtxt_models::message::scheduling::ScheduledMessage>,
} }
#[derive(Debug, Default, Deserialize, Serialize, ToSchema)] #[derive(Debug, Default, Deserialize, Serialize, ToSchema)]
pub struct CreateScheduleMessageEventResponse { pub struct CreateScheduleMessageEventResponse {
pub message: String, pub message: String,
pub data: Vec<textsender_models::message::scheduling::ScheduledMessageEvent>, pub data: Vec<schedtxt_models::message::scheduling::ScheduledMessageEvent>,
} }
pub use CreateScheduleMessageEventResponse as GetScheduledMessageEventResponse; pub use CreateScheduleMessageEventResponse as GetScheduledMessageEventResponse;
@@ -133,13 +133,13 @@ pub mod endpoint {
let mut response = super::response::ScheduleMessageResponse::default(); let mut response = super::response::ScheduleMessageResponse::default();
if payload.is_valid() { if payload.is_valid() {
if payload.status != textsender_models::message::scheduling::PENDING { if payload.status != schedtxt_models::message::scheduling::PENDING {
response.message = String::from("scheduled message must be pending"); response.message = String::from("scheduled message must be pending");
(axum::http::StatusCode::BAD_REQUEST, axum::Json(response)) (axum::http::StatusCode::BAD_REQUEST, axum::Json(response))
} else { } else {
if can_schedule(&payload.scheduled) { if can_schedule(&payload.scheduled) {
let mut scheduled_message = let mut scheduled_message =
textsender_models::message::scheduling::ScheduledMessage { schedtxt_models::message::scheduling::ScheduledMessage {
scheduled: payload.scheduled, scheduled: payload.scheduled,
status: payload.status, status: payload.status,
..Default::default() ..Default::default()
@@ -402,7 +402,7 @@ pub mod endpoint {
} }
} }
let mut scme = textsender_models::message::scheduling::ScheduledMessageEvent { let mut scme = schedtxt_models::message::scheduling::ScheduledMessageEvent {
contact_id: payload.contact_id, contact_id: payload.contact_id,
message_id: payload.message_id, message_id: payload.message_id,
scheduled_message_id: payload.scheduled_message_id, scheduled_message_id: payload.scheduled_message_id,
+3 -3
View File
@@ -46,12 +46,12 @@ pub mod init {
.max_age(std::time::Duration::from_secs(3600)); // Cache the preflight response for 1 hour:cite[2] .max_age(std::time::Duration::from_secs(3600)); // Cache the preflight response for 1 hour:cite[2]
// Dynamically set the allowed origin based on the environment // Dynamically set the allowed origin based on the environment
match std::env::var(textsender_models::envy::keys::APP_ENV).as_deref() { match std::env::var(schedtxt_models::envy::keys::APP_ENV).as_deref() {
Ok("production") => { Ok("production") => {
// In production, allow only your specific, trusted origins // In production, allow only your specific, trusted origins
let allowed_origins_env = let allowed_origins_env =
textsender_models::envy::environment::get_allowed_origins(); schedtxt_models::envy::environment::get_allowed_origins();
match textsender_models::envy::utility::delimitize(&allowed_origins_env) { match schedtxt_models::envy::utility::delimitize(&allowed_origins_env) {
Ok(alwd) => { Ok(alwd) => {
let allowed_origins: Vec<axum::http::HeaderValue> = alwd let allowed_origins: Vec<axum::http::HeaderValue> = alwd
.into_iter() .into_iter()
+1 -1
View File
@@ -5,7 +5,7 @@ pub mod connection_settings {
} }
pub async fn create_pool() -> Result<sqlx::PgPool, sqlx::Error> { pub async fn create_pool() -> Result<sqlx::PgPool, sqlx::Error> {
let database_url = textsender_models::envy::environment::get_db_url().value; let database_url = schedtxt_models::envy::environment::get_db_url().value;
println!("Database url: {database_url}"); println!("Database url: {database_url}");
PgPoolOptions::new() PgPoolOptions::new()
+8 -8
View File
@@ -2,7 +2,7 @@ use sqlx::Row;
pub async fn insert( pub async fn insert(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
contact: &textsender_models::contact::Contact, contact: &schedtxt_models::contact::Contact,
) -> Result<uuid::Uuid, sqlx::Error> { ) -> Result<uuid::Uuid, sqlx::Error> {
match sqlx::query( match sqlx::query(
r#" r#"
@@ -29,7 +29,7 @@ pub async fn insert(
pub async fn get( pub async fn get(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
id: &uuid::Uuid, id: &uuid::Uuid,
) -> Result<textsender_models::contact::Contact, sqlx::Error> { ) -> Result<schedtxt_models::contact::Contact, sqlx::Error> {
match sqlx::query( match sqlx::query(
r#" r#"
SELECT id, firstname, lastname, nickname, phone_number, user_id FROM "contacts" SELECT id, firstname, lastname, nickname, phone_number, user_id FROM "contacts"
@@ -46,7 +46,7 @@ pub async fn get(
let phone_number: String = row.try_get("phone_number")?; let phone_number: String = row.try_get("phone_number")?;
let user_id: uuid::Uuid = row.try_get("user_id")?; let user_id: uuid::Uuid = row.try_get("user_id")?;
Ok(textsender_models::contact::Contact { Ok(schedtxt_models::contact::Contact {
id: Some(id), id: Some(id),
firstname: match row.try_get("firstname") { firstname: match row.try_get("firstname") {
Ok(val) => val, Ok(val) => val,
@@ -81,7 +81,7 @@ pub async fn get_with_user_id_and_phone(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
user_id: &uuid::Uuid, user_id: &uuid::Uuid,
phone_number: &str, phone_number: &str,
) -> Result<textsender_models::contact::Contact, sqlx::Error> { ) -> Result<schedtxt_models::contact::Contact, sqlx::Error> {
match sqlx::query( match sqlx::query(
r#" r#"
SELECT id, firstname, lastname, nickname, phone_number, user_id FROM "contacts" SELECT id, firstname, lastname, nickname, phone_number, user_id FROM "contacts"
@@ -103,7 +103,7 @@ pub async fn get_with_user_id_and_phone(
let phone_number: String = row.try_get("phone_number")?; let phone_number: String = row.try_get("phone_number")?;
let user_id: uuid::Uuid = row.try_get("user_id")?; let user_id: uuid::Uuid = row.try_get("user_id")?;
println!("Found"); println!("Found");
Ok(textsender_models::contact::Contact { Ok(schedtxt_models::contact::Contact {
id: Some(id), id: Some(id),
firstname: Some(firstname), firstname: Some(firstname),
lastname: Some(lastname), lastname: Some(lastname),
@@ -122,7 +122,7 @@ pub async fn get_with_user_id_and_phone(
pub async fn get_with_user_id( pub async fn get_with_user_id(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
user_id: &uuid::Uuid, user_id: &uuid::Uuid,
) -> Result<Vec<textsender_models::contact::Contact>, sqlx::Error> { ) -> Result<Vec<schedtxt_models::contact::Contact>, sqlx::Error> {
match sqlx::query( match sqlx::query(
r#" r#"
SELECT id, firstname, lastname, nickname, phone_number, user_id FROM "contacts" SELECT id, firstname, lastname, nickname, phone_number, user_id FROM "contacts"
@@ -135,13 +135,13 @@ pub async fn get_with_user_id(
.await .await
{ {
Ok(rows) => { Ok(rows) => {
let mut contacts: Vec<textsender_models::contact::Contact> = Vec::new(); let mut contacts: Vec<schedtxt_models::contact::Contact> = Vec::new();
for row in rows { for row in rows {
let id: uuid::Uuid = row.try_get("id")?; let id: uuid::Uuid = row.try_get("id")?;
let phone_number: String = row.try_get("phone_number")?; let phone_number: String = row.try_get("phone_number")?;
let user_id: uuid::Uuid = row.try_get("user_id")?; let user_id: uuid::Uuid = row.try_get("user_id")?;
let contact = textsender_models::contact::Contact { let contact = schedtxt_models::contact::Contact {
id: Some(id), id: Some(id),
firstname: match row.try_get("firstname") { firstname: match row.try_get("firstname") {
Ok(val) => val, Ok(val) => val,
+6 -6
View File
@@ -2,7 +2,7 @@ use sqlx::Row;
pub async fn insert( pub async fn insert(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
event: &textsender_models::message::event::MessageEventResponse, event: &schedtxt_models::message::event::MessageEventResponse,
) -> Result<uuid::Uuid, sqlx::Error> { ) -> Result<uuid::Uuid, sqlx::Error> {
match sqlx::query( match sqlx::query(
r#" r#"
@@ -31,7 +31,7 @@ pub async fn insert(
pub async fn get( pub async fn get(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
id: &uuid::Uuid, id: &uuid::Uuid,
) -> Result<textsender_models::message::event::MessageEventResponse, sqlx::Error> { ) -> Result<schedtxt_models::message::event::MessageEventResponse, sqlx::Error> {
match sqlx::query( match sqlx::query(
r#" r#"
SELECT id, scheduled_message_event_id, response, user_id, sent, contact_id, message_id, status FROM "message_event_responses" SELECT id, scheduled_message_event_id, response, user_id, sent, contact_id, message_id, status FROM "message_event_responses"
@@ -54,7 +54,7 @@ pub async fn get(
pub async fn get_with_user_id( pub async fn get_with_user_id(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
user_id: &uuid::Uuid, user_id: &uuid::Uuid,
) -> Result<Vec<textsender_models::message::event::MessageEventResponse>, sqlx::Error> { ) -> Result<Vec<schedtxt_models::message::event::MessageEventResponse>, sqlx::Error> {
match sqlx::query( match sqlx::query(
r#" r#"
SELECT id, scheduled_message_event_id, response, user_id, sent, contact_id, message_id, status FROM "message_event_responses" SELECT id, scheduled_message_event_id, response, user_id, sent, contact_id, message_id, status FROM "message_event_responses"
@@ -67,7 +67,7 @@ pub async fn get_with_user_id(
.await .await
{ {
Ok(rows) => { Ok(rows) => {
let mut events: Vec<textsender_models::message::event::MessageEventResponse> = let mut events: Vec<schedtxt_models::message::event::MessageEventResponse> =
Vec::new(); Vec::new();
for row in rows { for row in rows {
match parse_row(&row).await { match parse_row(&row).await {
@@ -88,7 +88,7 @@ pub async fn get_with_user_id(
async fn parse_row( async fn parse_row(
row: &sqlx::postgres::PgRow, row: &sqlx::postgres::PgRow,
) -> Result<textsender_models::message::event::MessageEventResponse, sqlx::Error> { ) -> Result<schedtxt_models::message::event::MessageEventResponse, sqlx::Error> {
println!("Parsing MER"); println!("Parsing MER");
let id: uuid::Uuid = row.try_get("id")?; let id: uuid::Uuid = row.try_get("id")?;
let response: serde_json::Value = row.try_get("response")?; let response: serde_json::Value = row.try_get("response")?;
@@ -101,7 +101,7 @@ async fn parse_row(
.unwrap_or_default(); .unwrap_or_default();
let user_id: uuid::Uuid = row.try_get("user_id")?; let user_id: uuid::Uuid = row.try_get("user_id")?;
Ok(textsender_models::message::event::MessageEventResponse { Ok(schedtxt_models::message::event::MessageEventResponse {
id, id,
response, response,
contact_id, contact_id,
+6 -6
View File
@@ -5,7 +5,7 @@ use sqlx::Row;
pub async fn insert( pub async fn insert(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
message: &textsender_models::message::Message, message: &schedtxt_models::message::Message,
user_id: &uuid::Uuid, user_id: &uuid::Uuid,
) -> Result<uuid::Uuid, sqlx::Error> { ) -> Result<uuid::Uuid, sqlx::Error> {
match sqlx::query( match sqlx::query(
@@ -30,7 +30,7 @@ pub async fn insert(
pub async fn get( pub async fn get(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
id: &uuid::Uuid, id: &uuid::Uuid,
) -> Result<textsender_models::message::Message, sqlx::Error> { ) -> Result<schedtxt_models::message::Message, sqlx::Error> {
match sqlx::query( match sqlx::query(
r#" r#"
SELECT id, content, user_id FROM "messages" SELECT id, content, user_id FROM "messages"
@@ -47,7 +47,7 @@ pub async fn get(
let content: String = row.try_get("content")?; let content: String = row.try_get("content")?;
let user_id: uuid::Uuid = row.try_get("user_id")?; let user_id: uuid::Uuid = row.try_get("user_id")?;
Ok(textsender_models::message::Message { Ok(schedtxt_models::message::Message {
id: Some(id), id: Some(id),
content, content,
user_id: Some(user_id), user_id: Some(user_id),
@@ -60,7 +60,7 @@ pub async fn get(
pub async fn get_with_user_id( pub async fn get_with_user_id(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
user_id: &uuid::Uuid, user_id: &uuid::Uuid,
) -> Result<Vec<textsender_models::message::Message>, sqlx::Error> { ) -> Result<Vec<schedtxt_models::message::Message>, sqlx::Error> {
match sqlx::query( match sqlx::query(
r#" r#"
SELECT id, content, user_id FROM "messages" SELECT id, content, user_id FROM "messages"
@@ -73,13 +73,13 @@ pub async fn get_with_user_id(
.await .await
{ {
Ok(rows) => { Ok(rows) => {
let mut messages: Vec<textsender_models::message::Message> = Vec::new(); let mut messages: Vec<schedtxt_models::message::Message> = Vec::new();
for row in rows { for row in rows {
let id: uuid::Uuid = row.try_get("id")?; let id: uuid::Uuid = row.try_get("id")?;
let content: String = row.try_get("content")?; let content: String = row.try_get("content")?;
let user_id: uuid::Uuid = row.try_get("user_id")?; let user_id: uuid::Uuid = row.try_get("user_id")?;
let message = textsender_models::message::Message { let message = schedtxt_models::message::Message {
id: Some(id), id: Some(id),
content, content,
user_id: Some(user_id), user_id: Some(user_id),
+16 -17
View File
@@ -2,7 +2,7 @@ use sqlx::Row;
pub async fn insert( pub async fn insert(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
scheduled_message: &textsender_models::message::scheduling::ScheduledMessage, scheduled_message: &schedtxt_models::message::scheduling::ScheduledMessage,
user_id: &uuid::Uuid, user_id: &uuid::Uuid,
) -> Result<(uuid::Uuid, time::OffsetDateTime), sqlx::Error> { ) -> Result<(uuid::Uuid, time::OffsetDateTime), sqlx::Error> {
match sqlx::query( match sqlx::query(
@@ -29,7 +29,7 @@ pub async fn insert(
pub async fn get( pub async fn get(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
id: &uuid::Uuid, id: &uuid::Uuid,
) -> Result<textsender_models::message::scheduling::ScheduledMessage, sqlx::Error> { ) -> Result<schedtxt_models::message::scheduling::ScheduledMessage, sqlx::Error> {
match sqlx::query( match sqlx::query(
r#" r#"
SELECT id, scheduled, created, status, user_id FROM "scheduled_messages" SELECT id, scheduled, created, status, user_id FROM "scheduled_messages"
@@ -52,7 +52,7 @@ pub async fn get(
pub async fn get_with_user_id( pub async fn get_with_user_id(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
user_id: &uuid::Uuid, user_id: &uuid::Uuid,
) -> Result<Vec<textsender_models::message::scheduling::ScheduledMessage>, sqlx::Error> { ) -> Result<Vec<schedtxt_models::message::scheduling::ScheduledMessage>, sqlx::Error> {
match sqlx::query( match sqlx::query(
r#" r#"
SELECT id, scheduled, created, status, user_id FROM "scheduled_messages" SELECT id, scheduled, created, status, user_id FROM "scheduled_messages"
@@ -65,7 +65,7 @@ pub async fn get_with_user_id(
.await .await
{ {
Ok(rows) => { Ok(rows) => {
let mut messages: Vec<textsender_models::message::scheduling::ScheduledMessage> = let mut messages: Vec<schedtxt_models::message::scheduling::ScheduledMessage> =
Vec::new(); Vec::new();
for row in rows { for row in rows {
match parse_row(&row).await { match parse_row(&row).await {
@@ -86,7 +86,7 @@ pub async fn get_with_user_id(
pub async fn fetch( pub async fn fetch(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
) -> Result<textsender_models::message::scheduling::ScheduledMessage, sqlx::Error> { ) -> Result<schedtxt_models::message::scheduling::ScheduledMessage, sqlx::Error> {
match sqlx::query( match sqlx::query(
r#" r#"
UPDATE "scheduled_messages" UPDATE "scheduled_messages"
@@ -101,8 +101,8 @@ pub async fn fetch(
RETURNING id, scheduled, created, status, user_id RETURNING id, scheduled, created, status, user_id
"#, "#,
) )
.bind(textsender_models::message::scheduling::PROCESSING) .bind(schedtxt_models::message::scheduling::PROCESSING)
.bind(textsender_models::message::scheduling::READY) .bind(schedtxt_models::message::scheduling::READY)
.fetch_one(pool) .fetch_one(pool)
.await .await
{ {
@@ -136,14 +136,14 @@ pub async fn update_status(
async fn parse_row( async fn parse_row(
row: &sqlx::postgres::PgRow, row: &sqlx::postgres::PgRow,
) -> Result<textsender_models::message::scheduling::ScheduledMessage, sqlx::Error> { ) -> Result<schedtxt_models::message::scheduling::ScheduledMessage, sqlx::Error> {
let id: uuid::Uuid = row.try_get("id")?; let id: uuid::Uuid = row.try_get("id")?;
let scheduled: time::OffsetDateTime = row.try_get("scheduled")?; let scheduled: time::OffsetDateTime = row.try_get("scheduled")?;
let status: String = row.try_get("status")?; let status: String = row.try_get("status")?;
let created: time::OffsetDateTime = row.try_get("created")?; let created: time::OffsetDateTime = row.try_get("created")?;
let user_id: uuid::Uuid = row.try_get("user_id")?; let user_id: uuid::Uuid = row.try_get("user_id")?;
Ok(textsender_models::message::scheduling::ScheduledMessage { Ok(schedtxt_models::message::scheduling::ScheduledMessage {
id, id,
scheduled: Some(scheduled), scheduled: Some(scheduled),
created: Some(created), created: Some(created),
@@ -157,7 +157,7 @@ pub mod sched_msg_event {
pub async fn insert( pub async fn insert(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
scheduled_message_event: &textsender_models::message::scheduling::ScheduledMessageEvent, scheduled_message_event: &schedtxt_models::message::scheduling::ScheduledMessageEvent,
) -> Result<(uuid::Uuid, time::OffsetDateTime), sqlx::Error> { ) -> Result<(uuid::Uuid, time::OffsetDateTime), sqlx::Error> {
match sqlx::query( match sqlx::query(
r#" r#"
@@ -183,7 +183,7 @@ pub mod sched_msg_event {
pub async fn get( pub async fn get(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
id: &uuid::Uuid, id: &uuid::Uuid,
) -> Result<textsender_models::message::scheduling::ScheduledMessageEvent, sqlx::Error> { ) -> Result<schedtxt_models::message::scheduling::ScheduledMessageEvent, sqlx::Error> {
match sqlx::query( match sqlx::query(
r#" r#"
SELECT id, contact_id, message_id, scheduled_message_id, created FROM "scheduled_message_events" SELECT id, contact_id, message_id, scheduled_message_id, created FROM "scheduled_message_events"
@@ -206,8 +206,7 @@ pub mod sched_msg_event {
pub async fn get_with_scheduled_message_id( pub async fn get_with_scheduled_message_id(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
scheduled_message_id: &uuid::Uuid, scheduled_message_id: &uuid::Uuid,
) -> Result<Vec<textsender_models::message::scheduling::ScheduledMessageEvent>, sqlx::Error> ) -> Result<Vec<schedtxt_models::message::scheduling::ScheduledMessageEvent>, sqlx::Error> {
{
match sqlx::query( match sqlx::query(
r#" r#"
SELECT id, contact_id, message_id, scheduled_message_id, created FROM "scheduled_message_events" SELECT id, contact_id, message_id, scheduled_message_id, created FROM "scheduled_message_events"
@@ -220,7 +219,7 @@ pub mod sched_msg_event {
.await .await
{ {
Ok(rows) => { Ok(rows) => {
let mut scheduled_message_events: Vec<textsender_models::message::scheduling::ScheduledMessageEvent> = let mut scheduled_message_events: Vec<schedtxt_models::message::scheduling::ScheduledMessageEvent> =
Vec::new(); Vec::new();
for row in rows { for row in rows {
match parse_row(&row).await { match parse_row(&row).await {
@@ -241,7 +240,7 @@ pub mod sched_msg_event {
pub async fn delete( pub async fn delete(
pool: &sqlx::PgPool, pool: &sqlx::PgPool,
scheduled_message_event: &textsender_models::message::scheduling::ScheduledMessageEvent, scheduled_message_event: &schedtxt_models::message::scheduling::ScheduledMessageEvent,
) -> Result<(), sqlx::Error> { ) -> Result<(), sqlx::Error> {
match sqlx::query( match sqlx::query(
r#" r#"
@@ -260,7 +259,7 @@ pub mod sched_msg_event {
async fn parse_row( async fn parse_row(
row: &sqlx::postgres::PgRow, row: &sqlx::postgres::PgRow,
) -> Result<textsender_models::message::scheduling::ScheduledMessageEvent, sqlx::Error> { ) -> Result<schedtxt_models::message::scheduling::ScheduledMessageEvent, sqlx::Error> {
let id: uuid::Uuid = row.try_get("id")?; let id: uuid::Uuid = row.try_get("id")?;
let contact_id: uuid::Uuid = row.try_get("contact_id")?; let contact_id: uuid::Uuid = row.try_get("contact_id")?;
let message_id: uuid::Uuid = row.try_get("message_id")?; let message_id: uuid::Uuid = row.try_get("message_id")?;
@@ -268,7 +267,7 @@ pub mod sched_msg_event {
let created: time::OffsetDateTime = row.try_get("created")?; let created: time::OffsetDateTime = row.try_get("created")?;
Ok( Ok(
textsender_models::message::scheduling::ScheduledMessageEvent { schedtxt_models::message::scheduling::ScheduledMessageEvent {
id, id,
contact_id, contact_id,
message_id, message_id,
+14 -14
View File
@@ -6,7 +6,7 @@ mod db_mgr {
pub const LIMIT: usize = 6; pub const LIMIT: usize = 6;
pub async fn get_pool() -> Result<sqlx::PgPool, sqlx::Error> { pub async fn get_pool() -> Result<sqlx::PgPool, sqlx::Error> {
let tm_db_url = textsender_models::envy::environment::get_db_url().value; let tm_db_url = schedtxt_models::envy::environment::get_db_url().value;
let tm_options = sqlx::postgres::PgConnectOptions::from_str(&tm_db_url).unwrap(); let tm_options = sqlx::postgres::PgConnectOptions::from_str(&tm_db_url).unwrap();
sqlx::PgPool::connect_with(tm_options).await sqlx::PgPool::connect_with(tm_options).await
} }
@@ -18,7 +18,7 @@ mod db_mgr {
} }
pub async fn connect_to_db(db_name: &str) -> Result<sqlx::PgPool, sqlx::Error> { pub async fn connect_to_db(db_name: &str) -> Result<sqlx::PgPool, sqlx::Error> {
let db_url = textsender_models::envy::environment::get_db_url().value; let db_url = schedtxt_models::envy::environment::get_db_url().value;
let options = sqlx::postgres::PgConnectOptions::from_str(&db_url)?.database(db_name); let options = sqlx::postgres::PgConnectOptions::from_str(&db_url)?.database(db_name);
sqlx::PgPool::connect_with(options).await sqlx::PgPool::connect_with(options).await
} }
@@ -77,7 +77,7 @@ mod db_mgr {
} }
pub async fn get_database_name() -> Result<String, Box<dyn std::error::Error>> { pub async fn get_database_name() -> Result<String, Box<dyn std::error::Error>> {
let database_url = textsender_models::envy::environment::get_db_url().value; let database_url = schedtxt_models::envy::environment::get_db_url().value;
let parsed_url = url::Url::parse(&database_url)?; let parsed_url = url::Url::parse(&database_url)?;
if parsed_url.scheme() == "postgres" || parsed_url.scheme() == "postgresql" { if parsed_url.scheme() == "postgres" || parsed_url.scheme() == "postgresql" {
@@ -185,17 +185,17 @@ pub fn test_mer_response() -> serde_json::Value {
} }
pub async fn test_token() -> Result<String, josekit::JoseError> { pub async fn test_token() -> Result<String, josekit::JoseError> {
let key: String = textsender_models::envy::environment::get_secret_main_key().value; let key: String = schedtxt_models::envy::environment::get_secret_main_key().value;
let (message, issuer, audience) = token_fields(); let (message, issuer, audience) = token_fields();
let token_resource = textsender_models::token::TokenResource { let token_resource = schedtxt_models::token::TokenResource {
message: message, message: message,
issuer: issuer, issuer: issuer,
audiences: vec![audience], audiences: vec![audience],
user_id: TEST_USER_ID, user_id: TEST_USER_ID,
}; };
match textsender_models::token::create_token(&key, token_resource, time::Duration::hours(1)) { match schedtxt_models::token::create_token(&key, token_resource, time::Duration::hours(1)) {
Ok(access_token) => Ok(access_token.access_token), Ok(access_token) => Ok(access_token.access_token),
Err(err) => Err(err), Err(err) => Err(err),
} }
@@ -372,7 +372,7 @@ mod request {
"response": super::super::super::test_mer_response(), "response": super::super::super::test_mer_response(),
"user_id": user_id, "user_id": user_id,
"sent": sent, "sent": sent,
"status": textsender_models::message::event::MESSAGE_EVENT_RESPONSE_STATUS_SCHEDULED, "status": schedtxt_models::message::event::MESSAGE_EVENT_RESPONSE_STATUS_SCHEDULED,
"contact_id": contact_id, "contact_id": contact_id,
"message_id": message_id "message_id": message_id
}); });
@@ -430,7 +430,7 @@ mod request {
let payload = serde_json::json!({ let payload = serde_json::json!({
"scheduled": scheduled, "scheduled": scheduled,
"status": textsender_models::message::scheduling::PENDING, "status": schedtxt_models::message::scheduling::PENDING,
"user_id": super::super::super::TEST_USER_ID, "user_id": super::super::super::TEST_USER_ID,
}); });
@@ -683,7 +683,7 @@ async fn test_update_contact_names() {
let (tm_pool, db_name, pool) = db_mgr::get_database_ready().await; let (tm_pool, db_name, pool) = db_mgr::get_database_ready().await;
let app = init::app(pool).await; let app = init::app(pool).await;
let mut opt_contact: Option<textsender_models::contact::Contact> = None; let mut opt_contact: Option<schedtxt_models::contact::Contact> = None;
// Send request // Send request
match request::create_contact(&app).await { match request::create_contact(&app).await {
@@ -786,7 +786,7 @@ async fn test_create_message() {
async fn test_get_message() { async fn test_get_message() {
let (tm_pool, db_name, pool) = db_mgr::get_database_ready().await; let (tm_pool, db_name, pool) = db_mgr::get_database_ready().await;
let app = init::app(pool).await; let app = init::app(pool).await;
let mut message_result: Option<textsender_models::message::Message> = None; let mut message_result: Option<schedtxt_models::message::Message> = None;
// Send request // Send request
match request::message::create_message(&app).await { match request::message::create_message(&app).await {
@@ -1239,7 +1239,7 @@ async fn test_update_scheduled_message_status() {
match request::message::scheduling::update_scheduled_message_status( match request::message::scheduling::update_scheduled_message_status(
&app, &app,
&scheduled_message_id, &scheduled_message_id,
textsender_models::message::scheduling::READY, schedtxt_models::message::scheduling::READY,
) )
.await .await
{ {
@@ -1333,7 +1333,7 @@ async fn test_fetch_scheduled_message() {
match request::message::scheduling::update_scheduled_message_status( match request::message::scheduling::update_scheduled_message_status(
&app, &app,
&scheduled_message_id, &scheduled_message_id,
textsender_models::message::scheduling::READY, schedtxt_models::message::scheduling::READY,
) )
.await .await
{ {
@@ -1443,7 +1443,7 @@ async fn test_record_message_event_response() {
match request::message::scheduling::update_scheduled_message_status( match request::message::scheduling::update_scheduled_message_status(
&app, &app,
&scheduled_message_id, &scheduled_message_id,
textsender_models::message::scheduling::READY, schedtxt_models::message::scheduling::READY,
) )
.await .await
{ {
@@ -1580,7 +1580,7 @@ async fn test_get_message_event_response() {
match request::message::scheduling::update_scheduled_message_status( match request::message::scheduling::update_scheduled_message_status(
&app, &app,
&scheduled_message_id, &scheduled_message_id,
textsender_models::message::scheduling::READY, schedtxt_models::message::scheduling::READY,
) )
.await .await
{ {