use crate::core::api::{accounts, ciphers, folders, orgs, sends};
use crate::core::context::KeychainContext;
use crate::core::error::AppResult;
use crate::core::models::sync::{EquivalentDomains, SyncData};
use crate::core::store::orgs as org_store;
pub async fn sync(ctx: &KeychainContext, user_uuid: &str) -> AppResult<SyncData> {
let profile = accounts::account(ctx, user_uuid).await?;
let folders = folders::list(ctx, user_uuid).await?;
let ciphers = ciphers::list(ctx, user_uuid).await?;
let sends = sends::list(ctx, user_uuid).await?;
let mut collections = Vec::new();
for membership in org_store::find_memberships_by_user(ctx.db(), user_uuid).await? {
for collection in orgs::list_collections(ctx, user_uuid, &membership.org_uuid).await? {
collections.push(serde_json::to_value(collection).unwrap_or_default());
}
}
Ok(SyncData {
profile: Some(profile),
folders,
ciphers,
collections,
sends,
domains: Some(EquivalentDomains {
equivalent_domains: None,
global_equivalent_domains: None,
}),
})
}