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