torigen_mounter 0.4.2

Core functionality for Torigen, a tool for mounting and managing Tor hidden services.
Documentation
use serde::{Deserialize, Serialize};
use std::collections::HashMap;

use crate::generated::Tag;

#[derive(Deserialize, Serialize, Debug, Clone)]
pub enum TagOperator {
    And,
    Or,
}

#[derive(Deserialize, Serialize, Debug, Clone)]
pub enum SearchParamValue {
    String(String),
    Int(u32),
    Bool(bool),
    VectorString(Vec<String>),
    VectorInt(Vec<u32>),
}

#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct SearchRequest {
    pub query: Option<String>,
    pub included_tags: Vec<Tag>,
    pub excluded_tags: Vec<Tag>,
    pub include_operator: Option<TagOperator>,
    pub exclude_operator: Option<TagOperator>,

    pub page: Option<u32>,
    pub limit: Option<u32>,
    pub offset: Option<u32>,

    pub parameters: Option<HashMap<String, SearchParamValue>>,
}