@@ -25,11 +25,11 @@ use crate::{
2525 prelude:: * ,
2626} ;
2727use feedback_fusion_common:: proto:: {
28- AuthorizationGrant as ProtoAuthorizationGrant ,
29- AuthorizationType as ProtoAuthorizationType ,
30- // GetResourceAuthorizationRequest , ResourceAuthorization as ProtoResourceAuthorization,
31- ResourceAuthorizationList ,
32- ResourceKind as ProtoResourceKind ,
28+ AuthorizationGrant as ProtoAuthorizationGrant , AuthorizationType as ProtoAuthorizationType ,
29+ DeleteResourceAuthorizationRequest , GetResourceAuthorizationRequest ,
30+ GetResourceAuthorizationsRequest , ResourceAuthorization as ProtoResourceAuthorization ,
31+ ResourceAuthorizationList , ResourceAuthorizationPage , ResourceKind as ProtoResourceKind ,
32+ UpdateResourceAuthorizationRequest ,
3333} ;
3434
3535use feedback_fusion_common:: proto:: CreateResourceAuthorizationRequest ;
@@ -104,22 +104,86 @@ pub async fn create_resource_authorization(
104104 } ) )
105105}
106106
107- //pub async fn get_resoruce_authorization(
108- // context: &FeedbackFusionV1Context,
109- // request: Request<GetResourceAuthorizationRequest>,
110- // _user_context: UserContext,
111- //) -> Result<Response<ProtoResourceAuthorization>> {
112- // let connection = context.connection();
113- // let data = request.into_inner();
114- // data.validate()?;
115- //
116- // let authorization = database_request!(
117- // ResourceAuthorization::select_by_id(connection, data.id.as_str()).await,
118- // "Select authorization by id"
119- // )?
120- // .ok_or(FeedbackFusionError::BadRequest(
121- // "ResourceAuthorization not found".to_owned(),
122- // ))?;
123- //
124- // Ok(Response::new(authorization.into()))
125- //}
107+ pub async fn get_resoruce_authorization (
108+ context : & FeedbackFusionV1Context ,
109+ request : Request < GetResourceAuthorizationRequest > ,
110+ _user_context : UserContext ,
111+ ) -> Result < Response < ProtoResourceAuthorization > > {
112+ let connection = context. connection ( ) ;
113+ let data = request. into_inner ( ) ;
114+ data. validate ( ) ?;
115+
116+ let authorization = database_request ! (
117+ ResourceAuthorization :: select_by_id( connection, data. id. as_str( ) ) . await ,
118+ "Select authorization by id"
119+ ) ?
120+ . ok_or ( FeedbackFusionError :: BadRequest (
121+ "ResourceAuthorization not found" . to_owned ( ) ,
122+ ) ) ?;
123+
124+ Ok ( Response :: new ( authorization. into ( ) ) )
125+ }
126+
127+ pub async fn get_resource_authorizations (
128+ context : & FeedbackFusionV1Context ,
129+ request : Request < GetResourceAuthorizationsRequest > ,
130+ _user_context : UserContext ,
131+ ) -> Result < Response < ResourceAuthorizationPage > > {
132+ let _connection = context. connection ( ) ;
133+ let _data = request. into_inner ( ) ;
134+
135+ todo ! ( ) ;
136+ }
137+
138+ pub async fn update_resource_authorization (
139+ context : & FeedbackFusionV1Context ,
140+ request : Request < UpdateResourceAuthorizationRequest > ,
141+ _user_context : UserContext ,
142+ ) -> Result < Response < ProtoResourceAuthorization > > {
143+ let connection = context. connection ( ) ;
144+ let data = request. into_inner ( ) ;
145+ data. validate ( ) ?;
146+
147+ let mut authorization = database_request ! (
148+ ResourceAuthorization :: select_by_id( connection, data. id. as_str( ) ) . await ,
149+ "Select ResourceAuthorization by id"
150+ ) ?
151+ . ok_or ( FeedbackFusionError :: BadRequest (
152+ "ResourceAuthorization not found" . to_owned ( ) ,
153+ ) ) ?;
154+
155+ authorization. set_resource_id ( data. resource_id ) ;
156+ if let Some ( grant) = data. authorization_grant {
157+ authorization
158+ . set_authorization_grant ( ( & ProtoAuthorizationGrant :: try_from ( grant) . unwrap ( ) ) . into ( ) ) ;
159+ }
160+
161+ if let Some ( authorization_type) = data. authorization_type {
162+ authorization. set_authorization_type (
163+ ( & ProtoAuthorizationType :: try_from ( authorization_type) . unwrap ( ) ) . into ( ) ,
164+ ) ;
165+ }
166+
167+ database_request ! (
168+ ResourceAuthorization :: update_by_column( connection, & authorization, "id" ) . await ,
169+ "Update Resourceauthorization"
170+ ) ?;
171+
172+ Ok ( Response :: new ( authorization. into ( ) ) )
173+ }
174+
175+ pub async fn delete_resoruce_authorization (
176+ context : & FeedbackFusionV1Context ,
177+ request : Request < DeleteResourceAuthorizationRequest > ,
178+ _user_context : UserContext ,
179+ ) -> Result < Response < ( ) > > {
180+ let connection = context. connection ( ) ;
181+ let data = request. into_inner ( ) ;
182+
183+ database_request ! (
184+ ResourceAuthorization :: delete_by_column( connection, "id" , data. id. as_str( ) ) . await ,
185+ "Delete ResourceAuthorization by id"
186+ ) ?;
187+
188+ Ok ( Response :: new ( ( ) ) )
189+ }
0 commit comments