dialtone_sqlx 0.1.0

Dialtone SQLx Back-End
Documentation
use dialtone_common::rest::ap_objects::ap_object_model::ApObjectVisibilityType;
use sqlx::{Executor, Postgres, Row};

use crate::db::ap_object::ApObjectVisibilityDbType;

pub async fn update_ap_object_visibility(
    exec: impl Executor<'_, Database = Postgres>,
    ap_object_id: &str,
    visibility: &ApObjectVisibilityType,
) -> Result<Option<()>, sqlx::Error> {
    let visibility = ApObjectVisibilityDbType::from(visibility);
    let result = sqlx::query(
        r#"
        update ap_object
        set
            visibility = $1
        where
            id = $2
        returning id
        "#,
    )
    .bind(visibility)
    .bind(ap_object_id)
    .fetch_optional(exec)
    .await?;
    match result {
        None => Ok(None),
        Some(row) => {
            row.try_get::<String, usize>(0)?;
            Ok(Some(()))
        }
    }
}