Skip to main content

agdb/query/
insert_index_query.rs

1use crate::DbError;
2use crate::DbImpl;
3use crate::DbValue;
4use crate::QueryMut;
5use crate::QueryResult;
6use crate::StorageData;
7
8/// Query to create a new index on
9/// a given key.
10#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
11#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
12#[cfg_attr(feature = "derive", derive(agdb::DbSerialize))]
13#[cfg_attr(feature = "api", derive(agdb::TypeDefImpl))]
14#[derive(Clone, Debug, PartialEq)]
15pub struct InsertIndexQuery(pub DbValue);
16
17impl QueryMut for InsertIndexQuery {
18    fn process<Store: StorageData>(&self, db: &mut DbImpl<Store>) -> Result<QueryResult, DbError> {
19        let value_count = db.insert_index(&self.0)?;
20
21        Ok(QueryResult {
22            result: value_count as i64,
23            elements: vec![],
24        })
25    }
26}
27
28impl QueryMut for &InsertIndexQuery {
29    fn process<Store: StorageData>(&self, db: &mut DbImpl<Store>) -> Result<QueryResult, DbError> {
30        (*self).process(db)
31    }
32}