rscale 0.1.0

Self-hosted Rust control plane for operating a single tailnet with Tailscale clients
Documentation
use crate::AppResult;
use crate::domain::{AuditEvent, AuthKey, DnsConfig, Node, Route};

pub trait NodeRepository: Send + Sync {
    fn list_nodes(&self) -> AppResult<Vec<Node>>;
    fn save_node(&self, node: &Node) -> AppResult<()>;
}

pub trait AuthKeyRepository: Send + Sync {
    fn save_auth_key(&self, auth_key: &AuthKey) -> AppResult<()>;
}

pub trait RouteRepository: Send + Sync {
    fn list_routes(&self) -> AppResult<Vec<Route>>;
}

pub trait DnsRepository: Send + Sync {
    fn load_dns_config(&self) -> AppResult<DnsConfig>;
}

pub trait AuditSink: Send + Sync {
    fn record(&self, event: &AuditEvent) -> AppResult<()>;
}