Skip to content

Commit 77afd8e

Browse files
committed
Remove helper traits
1 parent 8c805ea commit 77afd8e

File tree

10 files changed

+127
-213
lines changed

10 files changed

+127
-213
lines changed

v-api/src/context/group.rs

+5-10
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use v_model::{
1212

1313
use crate::{
1414
permissions::{VAppPermission, VPermission},
15-
response::{resource_restricted, ResourceResult, ToResourceResult, ToResourceResultOpt},
15+
response::{resource_restricted, OptionalResource, ResourceResult},
1616
VApiStorage,
1717
};
1818

@@ -42,8 +42,7 @@ where
4242
AccessGroupFilter::default(),
4343
&ListPagination::unlimited(),
4444
)
45-
.await
46-
.to_resource_result()?;
45+
.await?;
4746
groups.retain(|group| {
4847
caller.any(&[
4948
&VPermission::GetGroupsAll.into(),
@@ -60,9 +59,7 @@ where
6059
group: NewAccessGroup<T>,
6160
) -> ResourceResult<AccessGroup<T>, StoreError> {
6261
if caller.can(&VPermission::CreateGroup.into()) {
63-
AccessGroupStore::upsert(&*self.storage, &group)
64-
.await
65-
.to_resource_result()
62+
Ok(AccessGroupStore::upsert(&*self.storage, &group).await?)
6663
} else {
6764
resource_restricted()
6865
}
@@ -77,9 +74,7 @@ where
7774
&VPermission::ManageGroup(group.id).into(),
7875
&VPermission::ManageGroupsAll.into(),
7976
]) {
80-
AccessGroupStore::upsert(&*self.storage, &group)
81-
.await
82-
.to_resource_result()
77+
Ok(AccessGroupStore::upsert(&*self.storage, &group).await?)
8378
} else {
8479
resource_restricted()
8580
}
@@ -96,7 +91,7 @@ where
9691
]) {
9792
AccessGroupStore::delete(&*self.storage, group_id)
9893
.await
99-
.opt_to_resource_result()
94+
.optional()
10095
} else {
10196
resource_restricted()
10297
}

v-api/src/context/link.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use crate::{
1717
Signer,
1818
},
1919
permissions::{VAppPermission, VPermission},
20-
response::{resource_restricted, ResourceResult, ToResourceResult},
20+
response::{resource_restricted, ResourceResult},
2121
VApiStorage,
2222
};
2323

@@ -59,7 +59,7 @@ where
5959
let secret = RawKey::generate::<8>(link_id.as_untyped_uuid());
6060
let signed = secret.sign(signer).await.unwrap();
6161

62-
LinkRequestStore::upsert(
62+
Ok(LinkRequestStore::upsert(
6363
&*self.storage,
6464
&NewLinkRequest {
6565
id: link_id,
@@ -72,8 +72,7 @@ where
7272
},
7373
)
7474
.await
75-
.map(|_| signed)
76-
.to_resource_result()
75+
.map(|_| signed)?)
7776
} else {
7877
resource_restricted()
7978
}

v-api/src/context/magic_link.rs

+36-41
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ use crate::{
2929
messenger::{Message, Messenger, MessengerError},
3030
permissions::{VAppPermission, VPermission},
3131
response::{
32-
resource_restricted, ResourceErrorInner, ResourceResult, ToResourceResult,
33-
ToResourceResultOpt,
32+
resource_error, resource_restricted, OptionalResource, ResourceError, ResourceErrorInner,
33+
ResourceResult,
3434
},
3535
};
3636

@@ -113,14 +113,13 @@ where
113113
caller: &Caller<T>,
114114
) -> ResourceResult<MagicLink, StoreError> {
115115
if caller.can(&VPermission::CreateMagicLinkClient.into()) {
116-
MagicLinkStore::upsert(
116+
Ok(MagicLinkStore::upsert(
117117
&*self.storage,
118118
NewMagicLink {
119119
id: TypedUuid::new_v4(),
120120
},
121121
)
122-
.await
123-
.to_resource_result()
122+
.await?)
124123
} else {
125124
resource_restricted()
126125
}
@@ -137,7 +136,7 @@ where
137136
]) {
138137
MagicLinkStore::get(&*self.storage, id, false)
139138
.await
140-
.opt_to_resource_result()
139+
.optional()
141140
} else {
142141
resource_restricted()
143142
}
@@ -157,8 +156,7 @@ where
157156
},
158157
&ListPagination::default(),
159158
)
160-
.await
161-
.to_resource_result()?;
159+
.await?;
162160

163161
clients.retain(|client| {
164162
caller.any(&[
@@ -181,16 +179,15 @@ where
181179
&VPermission::ManageMagicLinkClient(*client_id).into(),
182180
&VPermission::ManageMagicLinkClientsAll.into(),
183181
]) {
184-
MagicLinkSecretStore::upsert(
182+
Ok(MagicLinkSecretStore::upsert(
185183
&*self.storage,
186184
NewMagicLinkSecret {
187185
id: *id,
188186
magic_link_client_id: *client_id,
189187
secret_signature: secret.to_string(),
190188
},
191189
)
192-
.await
193-
.to_resource_result()
190+
.await?)
194191
} else {
195192
resource_restricted()
196193
}
@@ -208,7 +205,7 @@ where
208205
]) {
209206
MagicLinkSecretStore::delete(&*self.storage, id)
210207
.await
211-
.opt_to_resource_result()
208+
.optional()
212209
} else {
213210
resource_restricted()
214211
}
@@ -224,16 +221,15 @@ where
224221
&VPermission::ManageMagicLinkClient(*client_id).into(),
225222
&VPermission::ManageMagicLinkClientsAll.into(),
226223
]) {
227-
MagicLinkRedirectUriStore::upsert(
224+
Ok(MagicLinkRedirectUriStore::upsert(
228225
&*self.storage,
229226
NewMagicLinkRedirectUri {
230227
id: TypedUuid::new_v4(),
231228
magic_link_client_id: *client_id,
232229
redirect_uri: uri.to_string(),
233230
},
234231
)
235-
.await
236-
.to_resource_result()
232+
.await?)
237233
} else {
238234
resource_restricted()
239235
}
@@ -251,7 +247,7 @@ where
251247
]) {
252248
MagicLinkRedirectUriStore::delete(&*self.storage, id)
253249
.await
254-
.opt_to_resource_result()
250+
.optional()
255251
} else {
256252
resource_restricted()
257253
}
@@ -274,7 +270,7 @@ where
274270
MagicLinkStore::list(&*self.storage, filter, &ListPagination::latest())
275271
.await
276272
.map(|mut results| results.pop())
277-
.opt_to_resource_result()
273+
.optional()
278274
}
279275

280276
pub async fn find_login_attempt(
@@ -286,7 +282,7 @@ where
286282
MagicLinkAttemptStore::list(&*self.storage, filter, &ListPagination::latest())
287283
.await
288284
.map(|mut results| results.pop())
289-
.opt_to_resource_result()
285+
.optional()
290286
}
291287

292288
#[instrument(skip(self, key, signer, redirect_uri, recipient), err(Debug))]
@@ -306,17 +302,17 @@ where
306302
let key = key
307303
.sign(signer)
308304
.await
309-
.map_err(|err| err.into())
310-
.to_resource_result()?;
305+
.map_err(ResourceError::InternalError)
306+
.inner_err_into()?;
311307
let (signature, key) = (key.signature().to_string(), key.key());
312308

313309
tracing::debug!("Constructing login signature");
314310
let recipient_signature = signer
315311
.sign(recipient.as_bytes())
316312
.await
317313
.map(|bytes| hex::encode(&bytes))
318-
.map_err(|err| err.into())
319-
.to_resource_result()?;
314+
.map_err(ResourceError::InternalError)
315+
.inner_err_into()?;
320316

321317
tracing::debug!("Appending login key to redirect target");
322318
let mut url = redirect_uri.clone();
@@ -334,24 +330,24 @@ where
334330
.message_builders
335331
.get(&builder_target)
336332
.ok_or_else(move || MagicLinkSendError::NoMessageBuilder(builder_target))
337-
.to_resource_result()?
333+
.map_err(ResourceError::InternalError)?
338334
.create_message(recipient, key.expose_secret(), &url)
339335
.ok_or(MagicLinkSendError::FailedToBuildMessage)
340-
.to_resource_result()?;
336+
.map_err(ResourceError::InternalError)?;
341337

342338
tracing::info!("Sending magic link login attempt message");
343339
let sender_target = target.clone();
344340
self.messengers
345341
.get(&sender_target)
346342
.ok_or_else(move || MagicLinkSendError::NoMessageSender(sender_target))
347-
.to_resource_result()?
343+
.map_err(ResourceError::InternalError)?
348344
.send(message)
349345
.await
350-
.to_resource_result()
346+
.map_err(ResourceError::InternalError)
351347
.inner_err_into()?;
352348

353349
tracing::info!("Storing magic link attempt");
354-
MagicLinkAttemptStore::upsert(
350+
Ok(MagicLinkAttemptStore::upsert(
355351
&*self.storage,
356352
NewMagicLinkAttempt {
357353
id: TypedUuid::new_v4(),
@@ -366,9 +362,7 @@ where
366362
expiration,
367363
},
368364
)
369-
.await
370-
.to_resource_result()
371-
.inner_err_into()
365+
.await?)
372366
}
373367

374368
pub async fn complete_login_attempt(
@@ -383,9 +377,7 @@ where
383377
MagicLinkAttemptState::Sent,
384378
MagicLinkAttemptState::Complete,
385379
)
386-
.await
387-
.to_resource_result()
388-
.inner_err_into()?;
380+
.await?;
389381

390382
// If the transition did not return a model then we need to inspect the model and determine
391383
// why it failed
@@ -394,10 +386,13 @@ where
394386
None => {
395387
let attempt = MagicLinkAttemptStore::get(&*self.storage, &attempt_id)
396388
.await
397-
.opt_to_resource_result()
398-
.inner_err_into()?;
389+
.optional()?;
399390

400-
Self::inspect_failed_transition(attempt, signature, MagicLinkAttemptState::Sent)
391+
resource_error(Self::inspect_failed_transition(
392+
attempt,
393+
signature,
394+
MagicLinkAttemptState::Sent,
395+
))
401396
}
402397
}
403398
}
@@ -407,19 +402,19 @@ where
407402
attempt: MagicLinkAttempt,
408403
signature: &str,
409404
state: MagicLinkAttemptState,
410-
) -> ResourceResult<MagicLinkAttempt, MagicLinkTransitionError> {
405+
) -> MagicLinkTransitionError {
411406
if attempt.nonce_signature != signature {
412407
tracing::info!("Nonce signature does not match stored signature");
413-
Err(MagicLinkTransitionError::Nonce).to_resource_result()
408+
MagicLinkTransitionError::Nonce
414409
} else if attempt.attempt_state != state {
415410
tracing::info!("Attempt is not in a valid state to transition");
416-
Err(MagicLinkTransitionError::State(attempt.attempt_state)).to_resource_result()
411+
MagicLinkTransitionError::State(attempt.attempt_state)
417412
} else if attempt.expiration <= Utc::now() {
418413
tracing::info!("Attempt is expired");
419-
Err(MagicLinkTransitionError::Expired).to_resource_result()
414+
MagicLinkTransitionError::Expired
420415
} else {
421416
tracing::error!(id = ?attempt.id, "Unknown error occurred in attempting to determine magic link transition failure");
422-
Err(MagicLinkTransitionError::Unknown).to_resource_result()
417+
MagicLinkTransitionError::Unknown
423418
}
424419
}
425420
}

v-api/src/context/mapping.rs

+6-11
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use crate::{
1515
endpoints::login::UserInfo,
1616
mapper::MappingEngine,
1717
permissions::{VAppPermission, VPermission},
18-
response::{resource_restricted, ResourceResult, ToResourceResult, ToResourceResultOpt},
18+
response::{resource_restricted, OptionalResource, ResourceResult},
1919
VApiStorage,
2020
};
2121

@@ -61,13 +61,12 @@ where
6161
included_depleted: bool,
6262
) -> ResourceResult<Vec<Mapper>, StoreError> {
6363
if caller.can(&VPermission::GetMappersAll.into()) {
64-
MapperStore::list(
64+
Ok(MapperStore::list(
6565
&*self.storage,
6666
MapperFilter::default().depleted(included_depleted),
6767
&ListPagination::unlimited(),
6868
)
69-
.await
70-
.to_resource_result()
69+
.await?)
7170
} else {
7271
resource_restricted()
7372
}
@@ -79,9 +78,7 @@ where
7978
new_mapper: &NewMapper,
8079
) -> ResourceResult<Mapper, StoreError> {
8180
if caller.can(&VPermission::CreateMapper.into()) {
82-
MapperStore::upsert(&*self.storage, new_mapper)
83-
.await
84-
.to_resource_result()
81+
Ok(MapperStore::upsert(&*self.storage, new_mapper).await?)
8582
} else {
8683
resource_restricted()
8784
}
@@ -96,9 +93,7 @@ where
9693
&VPermission::ManageMapper(*id).into(),
9794
&VPermission::ManageMappersAll.into(),
9895
]) {
99-
MapperStore::delete(&*self.storage, id)
100-
.await
101-
.opt_to_resource_result()
96+
MapperStore::delete(&*self.storage, id).await.optional()
10297
} else {
10398
resource_restricted()
10499
}
@@ -129,7 +124,7 @@ where
129124
Ok(mapping) => {
130125
tracing::trace!(?mapper.name, "Applying mapping");
131126
(
132-
mapping.permissions_for(&info).await.to_resource_result()?,
127+
mapping.permissions_for(&info).await?,
133128
mapping.groups_for(&info).await?,
134129
)
135130
}

0 commit comments

Comments
 (0)