revolt_database/models/safety_snapshots/ops/
reference.rs

1use revolt_result::Result;
2
3use crate::ReferenceDb;
4use crate::Snapshot;
5
6use super::AbstractSnapshot;
7
8#[async_trait]
9impl AbstractSnapshot for ReferenceDb {
10    /// Insert a new report into the database
11    async fn insert_snapshot(&self, snapshot: &Snapshot) -> Result<()> {
12        let mut snapshots = self.safety_snapshots.lock().await;
13        if snapshots.contains_key(&snapshot.id) {
14            Err(create_database_error!("insert", "snapshot"))
15        } else {
16            snapshots.insert(snapshot.id.to_string(), snapshot.clone());
17            Ok(())
18        }
19    }
20}