use serde::{Deserialize, Serialize};
use std::fmt::Debug;
use std::hash::Hash;
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(bound = "
CollectionKey: Serialize + for<'de2> Deserialize<'de2>,
ItemId: Serialize + for<'de2> Deserialize<'de2>,
ItemPayload: Serialize + for<'de2> Deserialize<'de2>
")]
pub struct InsertListItemPayload<CollectionKey, ItemId, ItemPayload>
where
CollectionKey: Clone + Debug + Eq + Hash,
ItemId: Clone + Debug + Eq + Hash,
ItemPayload: Clone + Debug,
{
pub collection_key: CollectionKey,
pub item_id: ItemId, pub item_payload: ItemPayload,
pub after_item_id: Option<ItemId>,
pub at_index: Option<usize>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(bound = "
CollectionKey: Serialize + for<'de2> Deserialize<'de2>,
ItemId: Serialize + for<'de2> Deserialize<'de2>
")]
pub struct RemoveListItemPayload<CollectionKey, ItemId>
where
CollectionKey: Clone + Debug + Eq + Hash,
ItemId: Clone + Debug + Eq + Hash,
{
pub collection_key: CollectionKey,
pub item_id_to_remove: ItemId,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(bound = "
CollectionKey: Serialize + for<'de2> Deserialize<'de2>,
ItemId: Serialize + for<'de2> Deserialize<'de2>,
ItemPayload: Serialize + for<'de2> Deserialize<'de2>
")]
pub struct UpdateListItemPayload<CollectionKey, ItemId, ItemPayload>
where
CollectionKey: Clone + Debug + Eq + Hash,
ItemId: Clone + Debug + Eq + Hash,
ItemPayload: Clone + Debug,
{
pub collection_key: CollectionKey,
pub item_id_to_update: ItemId,
pub new_item_payload: ItemPayload,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(bound = "
CollectionKey: Serialize + for<'de2> Deserialize<'de2>,
ItemId: Serialize + for<'de2> Deserialize<'de2>
")]
pub struct MoveListItemPayload<CollectionKey, ItemId>
where
CollectionKey: Clone + Debug + Eq + Hash,
ItemId: Clone + Debug + Eq + Hash,
{
pub collection_key: CollectionKey,
pub item_id_to_move: ItemId,
pub new_after_item_id: Option<ItemId>,
pub new_index: Option<usize>,
}