Skip to content

Commit b13a498

Browse files
committed
updates for 2.0.0
1 parent 746aeff commit b13a498

File tree

2 files changed

+41
-46
lines changed

2 files changed

+41
-46
lines changed

Cargo.toml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,10 @@ default = ["sqlite"]
99
sqlite = ["sqlx/sqlite"]
1010

1111
[dependencies]
12-
async-session = "1.0.2"
12+
async-session = "2.0.0"
1313
sqlx = { version = "0.3.5" }
1414
async-std = "1.6.2"
1515

1616

1717
[dev-dependencies]
1818
async-std = { version = "1.6.2", features = ["attributes"] }
19-
20-
[patch.crates-io]
21-
async-session = { git = "https://github.com/jbr/async-session", branch = "tide" }

src/sqlite.rs

Lines changed: 40 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ use std::time::Duration;
1919
/// let mut session = Session::new();
2020
/// session.insert("key", vec![1,2,3]);
2121
///
22-
/// let cookie_value = store.store_session(session).await.unwrap();
23-
/// let session = store.load_session(cookie_value).await.unwrap();
22+
/// let cookie_value = store.store_session(session).await?.unwrap();
23+
/// let session = store.load_session(cookie_value).await?.unwrap();
2424
/// assert_eq!(session.get::<Vec<i8>>("key").unwrap(), vec![1,2,3]);
2525
/// # Ok(()) }) }
2626
///
@@ -143,7 +143,7 @@ impl SqliteSessionStore {
143143
/// let store = SqliteSessionStore::new("sqlite:%3Amemory:").await?;
144144
/// assert!(store.count().await.is_err());
145145
/// store.migrate().await?;
146-
/// store.store_session(Session::new()).await;
146+
/// store.store_session(Session::new()).await?;
147147
/// store.migrate().await?; // calling it a second time is safe
148148
/// assert_eq!(store.count().await?, 1);
149149
/// # Ok(()) }) }
@@ -190,7 +190,7 @@ impl SqliteSessionStore {
190190
/// store.spawn_cleanup_task(Duration::from_secs(1));
191191
/// let mut session = Session::new();
192192
/// session.expire_in(Duration::from_secs(0));
193-
/// store.store_session(session).await;
193+
/// store.store_session(session).await?;
194194
/// assert_eq!(store.count().await?, 1);
195195
/// async_std::task::sleep(Duration::from_secs(2)).await;
196196
/// assert_eq!(store.count().await?, 0);
@@ -219,7 +219,7 @@ impl SqliteSessionStore {
219219
/// store.migrate().await?;
220220
/// let mut session = Session::new();
221221
/// session.set_expiry(Utc::now() - Duration::seconds(5));
222-
/// store.store_session(session).await;
222+
/// store.store_session(session).await?;
223223
/// assert_eq!(store.count().await?, 1);
224224
/// store.cleanup().await?;
225225
/// assert_eq!(store.count().await?, 0);
@@ -251,7 +251,7 @@ impl SqliteSessionStore {
251251
/// let store = SqliteSessionStore::new("sqlite:%3Amemory:").await?;
252252
/// store.migrate().await?;
253253
/// assert_eq!(store.count().await?, 0);
254-
/// store.store_session(Session::new()).await;
254+
/// store.store_session(Session::new()).await?;
255255
/// assert_eq!(store.count().await?, 1);
256256
/// # Ok(()) }) }
257257
/// ```
@@ -268,29 +268,30 @@ impl SqliteSessionStore {
268268

269269
#[async_trait]
270270
impl SessionStore for SqliteSessionStore {
271-
async fn load_session(&self, cookie_value: String) -> Option<Session> {
272-
let id = Session::id_from_cookie_value(&cookie_value).ok()?;
273-
let mut connection = self.connection().await.ok()?;
271+
async fn load_session(&self, cookie_value: String) -> Result<Option<Session>> {
272+
let id = Session::id_from_cookie_value(&cookie_value)?;
273+
let mut connection = self.connection().await?;
274274

275-
let (session,): (String,) = sqlx::query_as(&self.substitute_table_name(
275+
let result: Option<(String,)> = sqlx::query_as(&self.substitute_table_name(
276276
r#"
277277
SELECT session FROM %%TABLE_NAME%%
278278
WHERE id = ? AND (expires IS NULL OR expires > ?)
279279
"#,
280280
))
281281
.bind(&id)
282282
.bind(Utc::now().timestamp())
283-
.fetch_one(&mut connection)
284-
.await
285-
.ok()?;
283+
.fetch_optional(&mut connection)
284+
.await?;
286285

287-
serde_json::from_str(&session).ok()?
286+
Ok(result
287+
.map(|(session,)| serde_json::from_str(&session))
288+
.transpose()?)
288289
}
289290

290-
async fn store_session(&self, session: Session) -> Option<String> {
291+
async fn store_session(&self, session: Session) -> Result<Option<String>> {
291292
let id = session.id();
292-
let string = serde_json::to_string(&session).ok()?;
293-
let mut connection = self.connection().await.ok()?;
293+
let string = serde_json::to_string(&session)?;
294+
let mut connection = self.connection().await?;
294295

295296
sqlx::query(&self.substitute_table_name(
296297
r#"
@@ -305,10 +306,9 @@ impl SessionStore for SqliteSessionStore {
305306
.bind(&string)
306307
.bind(&session.expiry().map(|expiry| expiry.timestamp()))
307308
.execute(&mut connection)
308-
.await
309-
.ok()?;
309+
.await?;
310310

311-
session.into_cookie_value()
311+
Ok(session.into_cookie_value())
312312
}
313313

314314
async fn destroy_session(&self, session: Session) -> Result {
@@ -361,7 +361,7 @@ mod tests {
361361
let mut session = Session::new();
362362
session.insert("key", "value")?;
363363
let cloned = session.clone();
364-
let cookie_value = store.store_session(session).await.unwrap();
364+
let cookie_value = store.store_session(session).await?.unwrap();
365365

366366
let (id, expires, serialized, count): (String, Option<i64>, String, i64) =
367367
sqlx::query_as("select id, expires, session, count(*) from async_sessions")
@@ -376,7 +376,7 @@ mod tests {
376376
assert_eq!(cloned.id(), deserialized_session.id());
377377
assert_eq!("value", &deserialized_session.get::<String>("key").unwrap());
378378

379-
let loaded_session = store.load_session(cookie_value).await.unwrap();
379+
let loaded_session = store.load_session(cookie_value).await?.unwrap();
380380
assert_eq!(cloned.id(), loaded_session.id());
381381
assert_eq!("value", &loaded_session.get::<String>("key").unwrap());
382382

@@ -391,13 +391,13 @@ mod tests {
391391
let original_id = session.id().to_owned();
392392

393393
session.insert("key", "value")?;
394-
let cookie_value = store.store_session(session).await.unwrap();
394+
let cookie_value = store.store_session(session).await?.unwrap();
395395

396-
let mut session = store.load_session(cookie_value.clone()).await.unwrap();
396+
let mut session = store.load_session(cookie_value.clone()).await?.unwrap();
397397
session.insert("key", "other value")?;
398-
assert_eq!(None, store.store_session(session).await);
398+
assert_eq!(None, store.store_session(session).await?);
399399

400-
let session = store.load_session(cookie_value.clone()).await.unwrap();
400+
let session = store.load_session(cookie_value.clone()).await?.unwrap();
401401
assert_eq!(session.get::<String>("key").unwrap(), "other value");
402402

403403
let (id, count): (String, i64) = sqlx::query_as("select id, count(*) from async_sessions")
@@ -417,15 +417,15 @@ mod tests {
417417
session.expire_in(Duration::from_secs(10));
418418
let original_id = session.id().to_owned();
419419
let original_expires = session.expiry().unwrap().clone();
420-
let cookie_value = store.store_session(session).await.unwrap();
420+
let cookie_value = store.store_session(session).await?.unwrap();
421421

422-
let mut session = store.load_session(cookie_value.clone()).await.unwrap();
422+
let mut session = store.load_session(cookie_value.clone()).await?.unwrap();
423423
assert_eq!(session.expiry().unwrap(), &original_expires);
424424
session.expire_in(Duration::from_secs(20));
425425
let new_expires = session.expiry().unwrap().clone();
426-
store.store_session(session).await;
426+
store.store_session(session).await?;
427427

428-
let session = store.load_session(cookie_value.clone()).await.unwrap();
428+
let session = store.load_session(cookie_value.clone()).await?.unwrap();
429429
assert_eq!(session.expiry().unwrap(), &new_expires);
430430

431431
let (id, expires, count): (String, i64, i64) =
@@ -448,7 +448,7 @@ mod tests {
448448
session.insert("key", "value")?;
449449
let cloned = session.clone();
450450

451-
let cookie_value = store.store_session(session).await.unwrap();
451+
let cookie_value = store.store_session(session).await?.unwrap();
452452

453453
let (id, expires, serialized, count): (String, Option<i64>, String, i64) =
454454
sqlx::query_as("select id, expires, session, count(*) from async_sessions")
@@ -458,20 +458,19 @@ mod tests {
458458
assert_eq!(1, count);
459459
assert_eq!(id, cloned.id());
460460
assert!(expires.unwrap() > Utc::now().timestamp());
461-
dbg!(expires.unwrap() - Utc::now().timestamp());
462461

463462
let deserialized_session: Session = serde_json::from_str(&serialized)?;
464463
assert_eq!(cloned.id(), deserialized_session.id());
465464
assert_eq!("value", &deserialized_session.get::<String>("key").unwrap());
466465

467-
let loaded_session = store.load_session(cookie_value.clone()).await.unwrap();
466+
let loaded_session = store.load_session(cookie_value.clone()).await?.unwrap();
468467
assert_eq!(cloned.id(), loaded_session.id());
469468
assert_eq!("value", &loaded_session.get::<String>("key").unwrap());
470469

471470
assert!(!loaded_session.is_expired());
472471

473472
task::sleep(Duration::from_secs(1)).await;
474-
assert_eq!(None, store.load_session(cookie_value).await);
473+
assert_eq!(None, store.load_session(cookie_value).await?);
475474

476475
Ok(())
477476
}
@@ -480,27 +479,26 @@ mod tests {
480479
async fn destroying_a_single_session() -> Result {
481480
let store = test_store().await;
482481
for _ in 0..3i8 {
483-
store.store_session(Session::new()).await;
482+
store.store_session(Session::new()).await?;
484483
}
485484

486-
let cookie = store.store_session(Session::new()).await.unwrap();
487-
dbg!("storing");
485+
let cookie = store.store_session(Session::new()).await?.unwrap();
488486
assert_eq!(4, store.count().await?);
489-
let session = store.load_session(cookie.clone()).await.unwrap();
487+
let session = store.load_session(cookie.clone()).await?.unwrap();
490488
store.destroy_session(session.clone()).await.unwrap();
491-
assert_eq!(None, store.load_session(cookie).await);
489+
assert_eq!(None, store.load_session(cookie).await?);
492490
assert_eq!(3, store.count().await?);
493491

494-
// attempting to destroy the session again is not an error
495-
assert!(store.destroy_session(session).await.is_ok());
492+
// // attempting to destroy the session again is not an error
493+
// assert!(store.destroy_session(session).await.is_ok());
496494
Ok(())
497495
}
498496

499497
#[async_std::test]
500498
async fn clearing_the_whole_store() -> Result {
501499
let store = test_store().await;
502500
for _ in 0..3i8 {
503-
store.store_session(Session::new()).await;
501+
store.store_session(Session::new()).await?;
504502
}
505503

506504
assert_eq!(3, store.count().await?);

0 commit comments

Comments
 (0)