1313// SPDX-License-Identifier: Apache-2.0
1414
1515use crate :: action:: Action ;
16- use crate :: cloud_worker:: identity:: v3:: {
17- IdentityApiRequest , IdentityGroupApiRequest , IdentityGroupDelete , IdentityGroupDeleteBuilder ,
18- IdentityGroupList , IdentityGroupUserList , IdentityGroupUserListBuilder ,
19- } ;
20- use crate :: cloud_worker:: types:: ApiRequest ;
16+ use crate :: cloud_worker:: types:: { self as cloud_types, ApiRequest } ;
2117use crate :: components:: generic_resource_view:: GenericResourceView ;
22- use crate :: components:: resource_behaviour:: ResourceBehaviour ;
18+ use crate :: components:: resource_behaviour:: { GeneratedResourceBehaviour , ResourceBehaviour } ;
2319use crate :: mode:: Mode ;
2420
25- const VIEW_CONFIG_KEY : & str = "identity.group" ;
26-
27- impl TryFrom < & serde_json:: Value > for IdentityGroupUserList {
21+ impl TryFrom < & serde_json:: Value > for cloud_types:: IdentityGroupUserList {
2822 type Error = crate :: cloud_worker:: identity:: v3:: IdentityGroupUserListBuilderError ;
2923 fn try_from ( value : & serde_json:: Value ) -> Result < Self , Self :: Error > {
30- let mut builder = IdentityGroupUserListBuilder :: default ( ) ;
24+ let mut builder =
25+ crate :: cloud_worker:: identity:: v3:: IdentityGroupUserListBuilder :: default ( ) ;
3126 if let Some ( val) = crate :: components:: view_render:: get_str ( value, "/id" ) {
3227 builder. group_id ( val. to_string ( ) ) ;
3328 }
@@ -38,10 +33,10 @@ impl TryFrom<&serde_json::Value> for IdentityGroupUserList {
3833 }
3934}
4035
41- impl TryFrom < & serde_json:: Value > for IdentityGroupDelete {
36+ impl TryFrom < & serde_json:: Value > for cloud_types :: IdentityGroupDelete {
4237 type Error = crate :: cloud_worker:: identity:: v3:: IdentityGroupDeleteBuilderError ;
4338 fn try_from ( value : & serde_json:: Value ) -> Result < Self , Self :: Error > {
44- let mut builder = IdentityGroupDeleteBuilder :: default ( ) ;
39+ let mut builder = crate :: cloud_worker :: identity :: v3 :: IdentityGroupDeleteBuilder :: default ( ) ;
4540 if let Some ( val) = crate :: components:: view_render:: get_str ( value, "/id" ) {
4641 builder. id ( val. to_string ( ) ) ;
4742 }
@@ -55,26 +50,22 @@ impl TryFrom<&serde_json::Value> for IdentityGroupDelete {
5550pub struct IdentityGroupsBehaviour ;
5651
5752impl ResourceBehaviour for IdentityGroupsBehaviour {
58- type Filter = IdentityGroupList ;
53+ type Filter = cloud_types :: IdentityGroupList ;
5954
6055 fn view_key ( ) -> & ' static str {
61- VIEW_CONFIG_KEY
56+ super :: generated :: group :: Generated :: view_key ( )
6257 }
6358 fn title ( ) -> & ' static str {
64- "Identity Groups"
59+ super :: generated :: group :: Generated :: title ( )
6560 }
6661 fn mode ( ) -> Mode {
67- Mode :: Resource ( Self :: view_key ( ) )
62+ super :: generated :: group :: Generated :: mode ( )
6863 }
6964 fn request_from_filter ( filter : & Self :: Filter ) -> ApiRequest {
70- ApiRequest :: from ( IdentityGroupApiRequest :: List ( Box :: new ( filter. clone ( ) ) ) )
65+ super :: generated :: group :: Generated :: request_from_filter ( filter)
7166 }
7267 fn matches_request ( request : & ApiRequest ) -> bool {
73- matches ! (
74- request,
75- ApiRequest :: Identity ( IdentityApiRequest :: Group ( boxreq) )
76- if matches!( * * boxreq, IdentityGroupApiRequest :: List ( _) )
77- )
68+ super :: generated:: group:: Generated :: matches_request ( request)
7869 }
7970 fn confirm_request (
8071 action : & Action ,
@@ -86,10 +77,10 @@ impl ResourceBehaviour for IdentityGroupsBehaviour {
8677 } = action
8778 && * key == Self :: view_key ( )
8879 {
89- let del = IdentityGroupDelete :: try_from ( selected?) . ok ( ) ?;
90- Some ( ApiRequest :: from ( IdentityGroupApiRequest :: Delete ( Box :: new (
91- del,
92- ) ) ) )
80+ let del = cloud_types :: IdentityGroupDelete :: try_from ( selected?) . ok ( ) ?;
81+ Some ( ApiRequest :: from (
82+ cloud_types :: IdentityGroupApiRequest :: Delete ( Box :: new ( del) ) ,
83+ ) )
9384 } else {
9485 None
9586 }
@@ -102,7 +93,7 @@ impl ResourceBehaviour for IdentityGroupsBehaviour {
10293 if let Action :: ShowResource ( key) = action
10394 && * key == crate :: mode:: IDENTITY_GROUP_USER
10495 && let Some ( sel) = selected
105- && let Ok ( list) = IdentityGroupUserList :: try_from ( sel)
96+ && let Ok ( list) = cloud_types :: IdentityGroupUserList :: try_from ( sel)
10697 {
10798 return vec ! [
10899 Action :: Mode {
@@ -135,7 +126,7 @@ mod tests {
135126 #[ test]
136127 fn view_key_and_title ( ) {
137128 assert_eq ! ( IdentityGroupsBehaviour :: view_key( ) , "identity.group" ) ;
138- assert_eq ! ( IdentityGroupsBehaviour :: title( ) , "Identity Groups" ) ;
129+ assert_eq ! ( IdentityGroupsBehaviour :: title( ) , "Groups" ) ;
139130 assert_eq ! (
140131 IdentityGroupsBehaviour :: mode( ) ,
141132 Mode :: Resource ( crate :: mode:: IDENTITY_GROUP )
@@ -144,29 +135,29 @@ mod tests {
144135
145136 #[ test]
146137 fn request_from_filter_creates_list_request ( ) {
147- let filter = IdentityGroupList :: default ( ) ;
138+ let filter = cloud_types :: IdentityGroupList :: default ( ) ;
148139 let request = IdentityGroupsBehaviour :: request_from_filter ( & filter) ;
149140 assert ! ( matches!(
150141 request,
151- ApiRequest :: Identity ( IdentityApiRequest :: Group ( boxreq) )
152- if matches!( * boxreq, IdentityGroupApiRequest :: List ( _) )
142+ ApiRequest :: Identity ( cloud_types :: IdentityApiRequest :: Group ( boxreq) )
143+ if matches!( * boxreq, cloud_types :: IdentityGroupApiRequest :: List ( _) )
153144 ) ) ;
154145 }
155146
156147 #[ test]
157148 fn matches_request_returns_true_for_list ( ) {
158- let filter = IdentityGroupList :: default ( ) ;
149+ let filter = cloud_types :: IdentityGroupList :: default ( ) ;
159150 let request = IdentityGroupsBehaviour :: request_from_filter ( & filter) ;
160151 assert ! ( IdentityGroupsBehaviour :: matches_request( & request) ) ;
161152 }
162153
163154 #[ test]
164155 fn matches_request_returns_false_for_unrelated ( ) {
165- let del = IdentityGroupDeleteBuilder :: default ( )
156+ let del = crate :: cloud_worker :: identity :: v3 :: IdentityGroupDeleteBuilder :: default ( )
166157 . id ( "test" . into ( ) )
167158 . build ( )
168159 . unwrap ( ) ;
169- let req = ApiRequest :: from ( IdentityGroupApiRequest :: Delete ( Box :: new ( del) ) ) ;
160+ let req = ApiRequest :: from ( cloud_types :: IdentityGroupApiRequest :: Delete ( Box :: new ( del) ) ) ;
170161 assert ! ( !IdentityGroupsBehaviour :: matches_request( & req) ) ;
171162 }
172163
@@ -184,8 +175,8 @@ mod tests {
184175 let request = result. unwrap ( ) ;
185176 assert ! ( matches!(
186177 request,
187- ApiRequest :: Identity ( IdentityApiRequest :: Group ( boxreq) )
188- if matches!( * boxreq, IdentityGroupApiRequest :: Delete ( _) )
178+ ApiRequest :: Identity ( cloud_types :: IdentityApiRequest :: Group ( boxreq) )
179+ if matches!( * boxreq, cloud_types :: IdentityGroupApiRequest :: Delete ( _) )
189180 ) ) ;
190181 }
191182
@@ -227,7 +218,7 @@ mod tests {
227218 let actions = IdentityGroupsBehaviour :: filter_carry_action (
228219 & Action :: ShowResource ( crate :: mode:: IDENTITY_GROUP_USER ) ,
229220 Some ( & group) ,
230- & IdentityGroupList :: default ( ) ,
221+ & cloud_types :: IdentityGroupList :: default ( ) ,
231222 ) ;
232223 assert_eq ! ( actions. len( ) , 2 ) ;
233224 assert ! ( matches!(
@@ -248,7 +239,7 @@ mod tests {
248239 let actions = IdentityGroupsBehaviour :: filter_carry_action (
249240 & Action :: ShowResource ( crate :: mode:: IDENTITY_GROUP_USER ) ,
250241 None ,
251- & IdentityGroupList :: default ( ) ,
242+ & cloud_types :: IdentityGroupList :: default ( ) ,
252243 ) ;
253244 assert ! ( actions. is_empty( ) ) ;
254245 }
@@ -259,7 +250,7 @@ mod tests {
259250 let actions = IdentityGroupsBehaviour :: filter_carry_action (
260251 & Action :: ShowResource ( crate :: mode:: IDENTITY_GROUP ) ,
261252 Some ( & group) ,
262- & IdentityGroupList :: default ( ) ,
253+ & cloud_types :: IdentityGroupList :: default ( ) ,
263254 ) ;
264255 assert ! ( actions. is_empty( ) ) ;
265256 }
@@ -270,7 +261,7 @@ mod tests {
270261 let actions = IdentityGroupsBehaviour :: filter_carry_action (
271262 & Action :: Tick ,
272263 Some ( & group) ,
273- & IdentityGroupList :: default ( ) ,
264+ & cloud_types :: IdentityGroupList :: default ( ) ,
274265 ) ;
275266 assert ! ( actions. is_empty( ) ) ;
276267 }
0 commit comments