use std::sync::Arc;
use refget_store::{SeqColStore, SequenceStore};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(default)]
pub struct RefgetConfig {
pub circular_supported: bool,
pub algorithms: Vec<String>,
pub subsequence_limit: u64,
pub circular_sequences: Vec<String>,
pub service_info: ServiceInfoConfig,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct ServiceInfoConfig {
pub organization: Option<OrganizationConfig>,
pub contact_url: Option<String>,
pub documentation_url: Option<String>,
pub environment: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OrganizationConfig {
pub name: String,
pub url: String,
}
impl Default for RefgetConfig {
fn default() -> Self {
Self {
circular_supported: true,
algorithms: vec!["md5".to_string(), "ga4gh".to_string(), "trunc512".to_string()],
subsequence_limit: 0,
circular_sequences: vec![],
service_info: ServiceInfoConfig::default(),
}
}
}
#[derive(Clone)]
pub struct RefgetState {
pub sequence_store: Arc<dyn SequenceStore>,
pub seqcol_store: Arc<dyn SeqColStore>,
pub config: RefgetConfig,
}