icydb_core/db/response/
ext.rs1use crate::{Error, Key, db::response::Response, traits::EntityKind};
2
3pub trait ResponseExt<E: EntityKind> {
8 fn entities(self) -> Result<Vec<E>, Error>;
11 fn one_entity(self) -> Result<E, Error>;
12 fn one_opt_entity(self) -> Result<Option<E>, Error>;
13
14 fn pks(self) -> Result<Vec<E::PrimaryKey>, Error>;
17 fn one_pk(self) -> Result<E::PrimaryKey, Error>;
18 fn one_opt_pk(self) -> Result<Option<E::PrimaryKey>, Error>;
19
20 fn keys(self) -> Result<Vec<Key>, Error>;
23 fn one_key(self) -> Result<Key, Error>;
24 fn one_opt_key(self) -> Result<Option<Key>, Error>;
25
26 fn views(self) -> Result<Vec<E::ViewType>, Error>;
29 fn one_view(self) -> Result<E::ViewType, Error>;
30 fn one_opt_view(self) -> Result<Option<E::ViewType>, Error>;
31
32 fn count(self) -> Result<u32, Error>;
35}
36
37impl<E: EntityKind> ResponseExt<E> for Result<Response<E>, Error> {
38 fn entities(self) -> Result<Vec<E>, Error> {
40 Ok(self?.entities())
41 }
42
43 fn one_entity(self) -> Result<E, Error> {
44 self?.one_entity()
45 }
46
47 fn one_opt_entity(self) -> Result<Option<E>, Error> {
48 self?.one_opt_entity()
49 }
50
51 fn pks(self) -> Result<Vec<E::PrimaryKey>, Error> {
54 Ok(self?.pks())
55 }
56
57 fn one_pk(self) -> Result<E::PrimaryKey, Error> {
58 self?.one_pk()
59 }
60
61 fn one_opt_pk(self) -> Result<Option<E::PrimaryKey>, Error> {
62 self?.one_opt_pk()
63 }
64
65 fn keys(self) -> Result<Vec<Key>, Error> {
68 Ok(self?.keys())
69 }
70
71 fn one_key(self) -> Result<Key, Error> {
72 self?.one_key()
73 }
74
75 fn one_opt_key(self) -> Result<Option<Key>, Error> {
76 self?.one_opt_key()
77 }
78
79 fn views(self) -> Result<Vec<E::ViewType>, Error> {
82 Ok(self?.views())
83 }
84
85 fn one_view(self) -> Result<E::ViewType, Error> {
86 self?.one_view()
87 }
88
89 fn one_opt_view(self) -> Result<Option<E::ViewType>, Error> {
90 self?.one_opt_view()
91 }
92
93 fn count(self) -> Result<u32, Error> {
96 Ok(self?.count())
97 }
98}