aw-test 0.0.2

Appwrite Rust SDK
Documentation
#![allow(unused)]
use serde::{Deserialize, Serialize, Deserializer};
use std::collections::HashMap;
use serde_json::value::Value;
use std::fmt::Display;
use super::*;

#[derive(Debug, Serialize, Clone)]
#[serde(deny_unknown_fields)]
#[serde(untagged)]
pub enum EmptyOption<T> {
    Some(T),
    None {},
}

impl<T> Display for EmptyOption<T>
where
    T: Display,
{
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        match self {
            EmptyOption::Some(t) => write!(f, "{}", t),
            EmptyOption::None {} => write!(f, ""),
        }
    }
}

impl<'de, T> Deserialize<'de> for EmptyOption<T>
where
    T: Deserialize<'de>,
{
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
    where
        D: Deserializer<'de>,
    {
        Option::deserialize(deserializer).map(Into::into)
    }
}

impl<T> From<EmptyOption<T>> for Option<T> {
    fn from(empty_option: EmptyOption<T>) -> Option<T> {
        match empty_option {
            EmptyOption::Some(option) => Some(option),
            EmptyOption::None {} => None,
        }
    }
}

impl<T> From<Option<T>> for EmptyOption<T> {
    fn from(option: Option<T>) -> EmptyOption<T> {
        match option {
            Some(option) => EmptyOption::Some(option),
            None {} => EmptyOption::None {},
        }
    }
}

impl<T> EmptyOption<T> {
    fn into_option(self) -> Option<T> {
        self.into()
    }
    fn as_option(&self) -> Option<&T> {
        match self {
            EmptyOption::Some(option) => Some(option),
            EmptyOption::None {} => None,
        }
    }
}

#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Project {
        #[serde(rename(serialize = "id", deserialize = "$id"))]
        pub id: String,
        pub name: String,
        pub description: String,
        pub teamId: String,
        pub logo: String,
        pub url: String,
        pub legalName: String,
        pub legalCountry: String,
        pub legalState: String,
        pub legalCity: String,
        pub legalAddress: String,
        pub legalTaxId: String,
        pub authLimit: i64,
        pub platforms: Vec<Platform>,
        pub webhooks: Vec<Webhook>,
        pub keys: Vec<Key>,
        pub domains: Vec<Domain>,
        pub providerAmazonAppid: String,
        pub providerAmazonSecret: String,
        pub providerAppleAppid: String,
        pub providerAppleSecret: String,
        pub providerBitbucketAppid: String,
        pub providerBitbucketSecret: String,
        pub providerBitlyAppid: String,
        pub providerBitlySecret: String,
        pub providerBoxAppid: String,
        pub providerBoxSecret: String,
        pub providerDiscordAppid: String,
        pub providerDiscordSecret: String,
        pub providerDropboxAppid: String,
        pub providerDropboxSecret: String,
        pub providerFacebookAppid: String,
        pub providerFacebookSecret: String,
        pub providerGithubAppid: String,
        pub providerGithubSecret: String,
        pub providerGitlabAppid: String,
        pub providerGitlabSecret: String,
        pub providerGoogleAppid: String,
        pub providerGoogleSecret: String,
        pub providerLinkedinAppid: String,
        pub providerLinkedinSecret: String,
        pub providerMicrosoftAppid: String,
        pub providerMicrosoftSecret: String,
        pub providerNotionAppid: String,
        pub providerNotionSecret: String,
        pub providerPaypalAppid: String,
        pub providerPaypalSecret: String,
        pub providerPaypalSandboxAppid: String,
        pub providerPaypalSandboxSecret: String,
        pub providerSalesforceAppid: String,
        pub providerSalesforceSecret: String,
        pub providerSlackAppid: String,
        pub providerSlackSecret: String,
        pub providerSpotifyAppid: String,
        pub providerSpotifySecret: String,
        pub providerTradeshiftAppid: String,
        pub providerTradeshiftSecret: String,
        pub providerTradeshiftBoxAppid: String,
        pub providerTradeshiftBoxSecret: String,
        pub providerTwitchAppid: String,
        pub providerTwitchSecret: String,
        pub providerVkAppid: String,
        pub providerVkSecret: String,
        pub providerYahooAppid: String,
        pub providerYahooSecret: String,
        pub providerYammerAppid: String,
        pub providerYammerSecret: String,
        pub providerYandexAppid: String,
        pub providerYandexSecret: String,
        pub providerWordpressAppid: String,
        pub providerWordpressSecret: String,
        pub providerStripeAppid: String,
        pub providerStripeSecret: String,
        pub providerMockAppid: String,
        pub providerMockSecret: String,
        pub authEmailPassword: bool,
        pub authUsersAuthMagicURL: bool,
        pub authAnonymous: bool,
        pub authInvites: bool,
        pub authJWT: bool,
        pub authPhone: bool,
        pub serviceStatusForAccount: bool,
        pub serviceStatusForAvatars: bool,
        pub serviceStatusForDatabase: bool,
        pub serviceStatusForLocale: bool,
        pub serviceStatusForHealth: bool,
        pub serviceStatusForStorage: bool,
        pub serviceStatusForTeams: bool,
        pub serviceStatusForUsers: bool,
        pub serviceStatusForFunctions: bool,
}

impl Display for Project {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatBuffer = String::new();
        formatBuffer.push_str(&format!("{:?}", self.id));
        formatBuffer.push_str(&format!("{:?}", self.name));
        formatBuffer.push_str(&format!("{:?}", self.description));
        formatBuffer.push_str(&format!("{:?}", self.teamId));
        formatBuffer.push_str(&format!("{:?}", self.logo));
        formatBuffer.push_str(&format!("{:?}", self.url));
        formatBuffer.push_str(&format!("{:?}", self.legalName));
        formatBuffer.push_str(&format!("{:?}", self.legalCountry));
        formatBuffer.push_str(&format!("{:?}", self.legalState));
        formatBuffer.push_str(&format!("{:?}", self.legalCity));
        formatBuffer.push_str(&format!("{:?}", self.legalAddress));
        formatBuffer.push_str(&format!("{:?}", self.legalTaxId));
        formatBuffer.push_str(&format!("{:?}", self.authLimit));
        for item in &self.platforms {
            formatBuffer.push_str(&format!("{:?}", item));
        }
        for item in &self.webhooks {
            formatBuffer.push_str(&format!("{:?}", item));
        }
        for item in &self.keys {
            formatBuffer.push_str(&format!("{:?}", item));
        }
        for item in &self.domains {
            formatBuffer.push_str(&format!("{:?}", item));
        }
        formatBuffer.push_str(&format!("{:?}", self.providerAmazonAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerAmazonSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerAppleAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerAppleSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerBitbucketAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerBitbucketSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerBitlyAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerBitlySecret));
        formatBuffer.push_str(&format!("{:?}", self.providerBoxAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerBoxSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerDiscordAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerDiscordSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerDropboxAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerDropboxSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerFacebookAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerFacebookSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerGithubAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerGithubSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerGitlabAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerGitlabSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerGoogleAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerGoogleSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerLinkedinAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerLinkedinSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerMicrosoftAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerMicrosoftSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerNotionAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerNotionSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerPaypalAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerPaypalSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerPaypalSandboxAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerPaypalSandboxSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerSalesforceAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerSalesforceSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerSlackAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerSlackSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerSpotifyAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerSpotifySecret));
        formatBuffer.push_str(&format!("{:?}", self.providerTradeshiftAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerTradeshiftSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerTradeshiftBoxAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerTradeshiftBoxSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerTwitchAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerTwitchSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerVkAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerVkSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerYahooAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerYahooSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerYammerAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerYammerSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerYandexAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerYandexSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerWordpressAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerWordpressSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerStripeAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerStripeSecret));
        formatBuffer.push_str(&format!("{:?}", self.providerMockAppid));
        formatBuffer.push_str(&format!("{:?}", self.providerMockSecret));
        formatBuffer.push_str(&format!("{:?}", self.authEmailPassword));
        formatBuffer.push_str(&format!("{:?}", self.authUsersAuthMagicURL));
        formatBuffer.push_str(&format!("{:?}", self.authAnonymous));
        formatBuffer.push_str(&format!("{:?}", self.authInvites));
        formatBuffer.push_str(&format!("{:?}", self.authJWT));
        formatBuffer.push_str(&format!("{:?}", self.authPhone));
        formatBuffer.push_str(&format!("{:?}", self.serviceStatusForAccount));
        formatBuffer.push_str(&format!("{:?}", self.serviceStatusForAvatars));
        formatBuffer.push_str(&format!("{:?}", self.serviceStatusForDatabase));
        formatBuffer.push_str(&format!("{:?}", self.serviceStatusForLocale));
        formatBuffer.push_str(&format!("{:?}", self.serviceStatusForHealth));
        formatBuffer.push_str(&format!("{:?}", self.serviceStatusForStorage));
        formatBuffer.push_str(&format!("{:?}", self.serviceStatusForTeams));
        formatBuffer.push_str(&format!("{:?}", self.serviceStatusForUsers));
        formatBuffer.push_str(&format!("{:?}", self.serviceStatusForFunctions));

        write!(f, "{}", formatBuffer)
    }
}

impl Project {
    pub fn new(id: String, name: String, description: String, teamId: String, logo: String, url: String, legalName: String, legalCountry: String, legalState: String, legalCity: String, legalAddress: String, legalTaxId: String, authLimit: i64, platforms: Vec<Platform>, webhooks: Vec<Webhook>, keys: Vec<Key>, domains: Vec<Domain>, providerAmazonAppid: String, providerAmazonSecret: String, providerAppleAppid: String, providerAppleSecret: String, providerBitbucketAppid: String, providerBitbucketSecret: String, providerBitlyAppid: String, providerBitlySecret: String, providerBoxAppid: String, providerBoxSecret: String, providerDiscordAppid: String, providerDiscordSecret: String, providerDropboxAppid: String, providerDropboxSecret: String, providerFacebookAppid: String, providerFacebookSecret: String, providerGithubAppid: String, providerGithubSecret: String, providerGitlabAppid: String, providerGitlabSecret: String, providerGoogleAppid: String, providerGoogleSecret: String, providerLinkedinAppid: String, providerLinkedinSecret: String, providerMicrosoftAppid: String, providerMicrosoftSecret: String, providerNotionAppid: String, providerNotionSecret: String, providerPaypalAppid: String, providerPaypalSecret: String, providerPaypalSandboxAppid: String, providerPaypalSandboxSecret: String, providerSalesforceAppid: String, providerSalesforceSecret: String, providerSlackAppid: String, providerSlackSecret: String, providerSpotifyAppid: String, providerSpotifySecret: String, providerTradeshiftAppid: String, providerTradeshiftSecret: String, providerTradeshiftBoxAppid: String, providerTradeshiftBoxSecret: String, providerTwitchAppid: String, providerTwitchSecret: String, providerVkAppid: String, providerVkSecret: String, providerYahooAppid: String, providerYahooSecret: String, providerYammerAppid: String, providerYammerSecret: String, providerYandexAppid: String, providerYandexSecret: String, providerWordpressAppid: String, providerWordpressSecret: String, providerStripeAppid: String, providerStripeSecret: String, providerMockAppid: String, providerMockSecret: String, authEmailPassword: bool, authUsersAuthMagicURL: bool, authAnonymous: bool, authInvites: bool, authJWT: bool, authPhone: bool, serviceStatusForAccount: bool, serviceStatusForAvatars: bool, serviceStatusForDatabase: bool, serviceStatusForLocale: bool, serviceStatusForHealth: bool, serviceStatusForStorage: bool, serviceStatusForTeams: bool, serviceStatusForUsers: bool, serviceStatusForFunctions: bool, ) -> Self {
        Self {
            id: id,
            name: name,
            description: description,
            teamId: teamId,
            logo: logo,
            url: url,
            legalName: legalName,
            legalCountry: legalCountry,
            legalState: legalState,
            legalCity: legalCity,
            legalAddress: legalAddress,
            legalTaxId: legalTaxId,
            authLimit: authLimit,
            platforms: platforms,
            webhooks: webhooks,
            keys: keys,
            domains: domains,
            providerAmazonAppid: providerAmazonAppid,
            providerAmazonSecret: providerAmazonSecret,
            providerAppleAppid: providerAppleAppid,
            providerAppleSecret: providerAppleSecret,
            providerBitbucketAppid: providerBitbucketAppid,
            providerBitbucketSecret: providerBitbucketSecret,
            providerBitlyAppid: providerBitlyAppid,
            providerBitlySecret: providerBitlySecret,
            providerBoxAppid: providerBoxAppid,
            providerBoxSecret: providerBoxSecret,
            providerDiscordAppid: providerDiscordAppid,
            providerDiscordSecret: providerDiscordSecret,
            providerDropboxAppid: providerDropboxAppid,
            providerDropboxSecret: providerDropboxSecret,
            providerFacebookAppid: providerFacebookAppid,
            providerFacebookSecret: providerFacebookSecret,
            providerGithubAppid: providerGithubAppid,
            providerGithubSecret: providerGithubSecret,
            providerGitlabAppid: providerGitlabAppid,
            providerGitlabSecret: providerGitlabSecret,
            providerGoogleAppid: providerGoogleAppid,
            providerGoogleSecret: providerGoogleSecret,
            providerLinkedinAppid: providerLinkedinAppid,
            providerLinkedinSecret: providerLinkedinSecret,
            providerMicrosoftAppid: providerMicrosoftAppid,
            providerMicrosoftSecret: providerMicrosoftSecret,
            providerNotionAppid: providerNotionAppid,
            providerNotionSecret: providerNotionSecret,
            providerPaypalAppid: providerPaypalAppid,
            providerPaypalSecret: providerPaypalSecret,
            providerPaypalSandboxAppid: providerPaypalSandboxAppid,
            providerPaypalSandboxSecret: providerPaypalSandboxSecret,
            providerSalesforceAppid: providerSalesforceAppid,
            providerSalesforceSecret: providerSalesforceSecret,
            providerSlackAppid: providerSlackAppid,
            providerSlackSecret: providerSlackSecret,
            providerSpotifyAppid: providerSpotifyAppid,
            providerSpotifySecret: providerSpotifySecret,
            providerTradeshiftAppid: providerTradeshiftAppid,
            providerTradeshiftSecret: providerTradeshiftSecret,
            providerTradeshiftBoxAppid: providerTradeshiftBoxAppid,
            providerTradeshiftBoxSecret: providerTradeshiftBoxSecret,
            providerTwitchAppid: providerTwitchAppid,
            providerTwitchSecret: providerTwitchSecret,
            providerVkAppid: providerVkAppid,
            providerVkSecret: providerVkSecret,
            providerYahooAppid: providerYahooAppid,
            providerYahooSecret: providerYahooSecret,
            providerYammerAppid: providerYammerAppid,
            providerYammerSecret: providerYammerSecret,
            providerYandexAppid: providerYandexAppid,
            providerYandexSecret: providerYandexSecret,
            providerWordpressAppid: providerWordpressAppid,
            providerWordpressSecret: providerWordpressSecret,
            providerStripeAppid: providerStripeAppid,
            providerStripeSecret: providerStripeSecret,
            providerMockAppid: providerMockAppid,
            providerMockSecret: providerMockSecret,
            authEmailPassword: authEmailPassword,
            authUsersAuthMagicURL: authUsersAuthMagicURL,
            authAnonymous: authAnonymous,
            authInvites: authInvites,
            authJWT: authJWT,
            authPhone: authPhone,
            serviceStatusForAccount: serviceStatusForAccount,
            serviceStatusForAvatars: serviceStatusForAvatars,
            serviceStatusForDatabase: serviceStatusForDatabase,
            serviceStatusForLocale: serviceStatusForLocale,
            serviceStatusForHealth: serviceStatusForHealth,
            serviceStatusForStorage: serviceStatusForStorage,
            serviceStatusForTeams: serviceStatusForTeams,
            serviceStatusForUsers: serviceStatusForUsers,
            serviceStatusForFunctions: serviceStatusForFunctions,
            }
    }
}