Skip to main content

autopulse_service/settings/triggers/
autoscan.rs

1use crate::settings::path_filter::PathFilter;
2use crate::settings::rewrite::Rewrite;
3use crate::settings::timer::Timer;
4use crate::settings::triggers::TriggerConfig;
5use serde::{Deserialize, Serialize};
6
7#[derive(Serialize, Deserialize, Clone, Default)]
8pub struct Autoscan {
9    /// Rewrite path
10    pub rewrite: Option<Rewrite>,
11    /// Timer settings
12    pub timer: Option<Timer>,
13    /// Targets to ignore
14    #[serde(default)]
15    pub excludes: Vec<String>,
16    /// Path filter matched against the rewritten file path.
17    #[serde(default)]
18    pub filter: PathFilter,
19}
20
21impl TriggerConfig for Autoscan {
22    fn rewrite(&self) -> Option<&Rewrite> {
23        self.rewrite.as_ref()
24    }
25
26    fn timer(&self) -> Option<&Timer> {
27        self.timer.as_ref()
28    }
29
30    fn excludes(&self) -> &Vec<String> {
31        &self.excludes
32    }
33
34    fn filter(&self) -> &PathFilter {
35        &self.filter
36    }
37}
38
39/// Autoscan trigger query parameters
40///
41/// Example:
42/// - /triggers/autoscan?dir=/path/to/dir
43#[derive(Deserialize)]
44pub struct AutoscanQueryParams {
45    /// Path to the directory
46    pub dir: String,
47}