dialtone_sqlx 0.1.0

Dialtone SQLx Back-End
Documentation
pub mod fetch;
pub mod fetch_authz;
pub mod fetch_owned;
pub mod fetch_random;
pub mod fetch_sysinfo;
pub mod insert;
pub mod page_by_actor;
pub mod page_by_host;
pub mod page_by_reference;
pub mod page_owned_by_actor;
pub mod update;
pub mod update_system_data;
pub mod update_visibility;

use dialtone_common::ap::ap_object::ApObjectType;
use dialtone_common::rest::ap_objects::ap_object_model::ApObjectVisibilityType;
use dialtone_sqlx_macros::SqlxEnumProxy;
use serde_variant::to_variant_name;
use std::str::FromStr;

#[derive(sqlx::Type, Debug, SqlxEnumProxy, PartialEq)]
#[sqlx(type_name = "ap_object_type")]
#[proxy_for(ApObjectType)]
pub enum ApObjectDbType {
    Note,
    Article,
    Document,
    Image,
    Video,
    Audio,
    Page,
}

#[derive(sqlx::Type, Debug, SqlxEnumProxy, PartialEq)]
#[sqlx(type_name = "ap_object_visibility_type")]
#[proxy_for(ApObjectVisibilityType)]
pub enum ApObjectVisibilityDbType {
    Visible,
    Invisible,
}

pub const OWNED_AP_OBJECT_JSON_OBJECT: &str = r#"
json_build_object(
    'ap', activity_pub_json,
    'owner_data', owner_data,
    'created_at', created_at,
    'modified_at', modified_at
)
"#;

pub const AP_OBJECT_SYSTEM_INFO_JSON_OBJECT: &str = r#"
json_build_object(
    'ap_object_id', id,
    'ap_object_type', type,
    'actor_owner', actor_owner,
    'visibility', visibility,
    'system_data', system_data 
)
"#;