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