stateset_embedded/
wishlists.rs1use stateset_core::{
21 AddWishlistItem, CreateWishlist, ProductId, Result, UpdateWishlist, Wishlist, WishlistFilter,
22 WishlistId, WishlistItem,
23};
24use stateset_db::{Database, DatabaseCapability};
25use std::sync::Arc;
26
27pub struct Wishlists {
29 db: Arc<dyn Database>,
30}
31
32impl std::fmt::Debug for Wishlists {
33 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
34 f.debug_struct("Wishlists").finish_non_exhaustive()
35 }
36}
37
38impl Wishlists {
39 pub(crate) fn new(db: Arc<dyn Database>) -> Self {
40 Self { db }
41 }
42
43 #[must_use]
45 pub fn is_supported(&self) -> bool {
46 self.db.supports_capability(DatabaseCapability::Wishlists)
47 }
48
49 fn ensure_supported(&self) -> Result<()> {
50 self.db.ensure_capability(DatabaseCapability::Wishlists)
51 }
52
53 pub fn create(&self, input: CreateWishlist) -> Result<Wishlist> {
70 self.ensure_supported()?;
71 self.db.wishlists().create(input)
72 }
73
74 pub fn get(&self, id: WishlistId) -> Result<Option<Wishlist>> {
76 self.ensure_supported()?;
77 self.db.wishlists().get(id)
78 }
79
80 pub fn update(&self, id: WishlistId, input: UpdateWishlist) -> Result<Wishlist> {
82 self.ensure_supported()?;
83 self.db.wishlists().update(id, input)
84 }
85
86 pub fn list(&self, filter: WishlistFilter) -> Result<Vec<Wishlist>> {
88 self.ensure_supported()?;
89 self.db.wishlists().list(filter)
90 }
91
92 pub fn delete(&self, id: WishlistId) -> Result<()> {
94 self.ensure_supported()?;
95 self.db.wishlists().delete(id)
96 }
97
98 pub fn add_item(&self, wishlist_id: WishlistId, item: AddWishlistItem) -> Result<WishlistItem> {
100 self.ensure_supported()?;
101 self.db.wishlists().add_item(wishlist_id, item)
102 }
103
104 pub fn remove_item(&self, wishlist_id: WishlistId, product_id: ProductId) -> Result<()> {
106 self.ensure_supported()?;
107 self.db.wishlists().remove_item(wishlist_id, product_id)
108 }
109}