use crate::concept::{AoristRef, WrappedConcept};
use crate::location::bigquery_location::*;
use crate::location::gcs_location::*;
use crate::location::github_location::*;
use crate::location::pushshift_api_location::*;
use crate::location::s3_location::*;
use crate::location::web_location::*;
use aorist_concept::{aorist, Constrainable};
use aorist_primitives::{AoristConcept, ConceptEnum};
use aorist_paste::paste;
use serde::{Deserialize, Serialize};
use std::fmt::Debug;
use uuid::Uuid;

#[aorist]
pub enum RemoteLocation {
    #[constrainable]
    GCSLocation(AoristRef<GCSLocation>),
    #[constrainable]
    WebLocation(AoristRef<WebLocation>),
    #[constrainable]
    PushshiftAPILocation(AoristRef<PushshiftAPILocation>),
    #[constrainable]
    BigQueryLocation(AoristRef<BigQueryLocation>),
    #[constrainable]
    GithubLocation(AoristRef<GithubLocation>),
    #[constrainable]
    S3Location(AoristRef<S3Location>),
}
