dialtone_sqlx 0.1.0

Dialtone SQLx Back-End
Documentation
use std::str::FromStr;

use serde_variant::to_variant_name;

use dialtone_common::ap::actor::ActorType;
use dialtone_common::rest::actors::actor_model::ActorVisibility;
use dialtone_sqlx_macros::SqlxEnumProxy;

pub mod fetch_owned;
pub mod fetch_public;
pub mod fetch_sysinfo;
pub mod insert;
pub mod page_by_host;
pub mod page_by_reference;
pub mod page_owned;
pub mod page_owned_by_owner;
pub mod update_ap;
pub mod update_sysinfo;

#[derive(sqlx::Type, Debug, SqlxEnumProxy, PartialEq)]
#[sqlx(type_name = "actor_type")]
#[proxy_for(ActorType)]
pub enum ActorDbType {
    Application,
    Group,
    Organization,
    Person,
    Service,
}

#[derive(sqlx::Type, Debug, SqlxEnumProxy, PartialEq)]
#[sqlx(type_name = "actor_visibility_type")]
#[proxy_for(ActorVisibility)]
pub enum ActorVisibilityType {
    Visible,
    Invisible,
    Banned,
}

pub const PUBLIC_ACTOR_JSON_OBJECT: &str = r#"
json_build_object(
    'ap', actor.activity_pub_json,
    'jrd', actor.webfinger_json
)
"#;

pub const OWNER_ACTOR_JSON_OBJECT: &str = r#"
json_build_object(
    'ap', actor.activity_pub_json,
    'jrd', actor.webfinger_json,
    'owner_data', actor.owner_data,
    'created_at', actor.created_at,
    'modified_at', actor.modified_at
)
"#;

pub const ACTOR_SYSTEM_INFO_JSON_OBJECT: &str = r#"
json_build_object(
    'actor_id', id,
    'visibility', visibility,
    'system_data', system_data
)
"#;