Skip to content

Commit a0e90c6

Browse files
committed
fix(examples): issues in preferred-crates
1 parent 0694fd4 commit a0e90c6

File tree

3 files changed

+22
-11
lines changed

3 files changed

+22
-11
lines changed

examples/postgres/preferred-crates/src/main.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ async fn main() -> anyhow::Result<()> {
3434
uses_rust_decimal::create_table(&mut conn).await?;
3535
uses_time::create_table(&mut conn).await?;
3636

37-
let user_id = sqlx::query!(
37+
let user_id = sqlx::query_scalar!(
3838
"insert into users(username, password_hash) values($1, $2) returning id",
3939
"user_foo",
4040
"<pretend this is a password hash>",
@@ -46,6 +46,8 @@ async fn main() -> anyhow::Result<()> {
4646
.fetch_one(&mut conn)
4747
.await?;
4848

49+
println!("Created user: {user:?}");
50+
4951
let session =
5052
uses_time::create_session(&mut conn, SessionData { user_id }, SESSION_DURATION).await?;
5153

@@ -62,5 +64,7 @@ async fn main() -> anyhow::Result<()> {
6264
.await?
6365
.expect("expected purchase");
6466

67+
println!("Created purchase: {purchase:?}");
68+
6569
Ok(())
6670
}

examples/postgres/preferred-crates/uses-rust-decimal/src/lib.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use chrono::{DateTime, Utc};
22
use sqlx::PgExecutor;
33

4-
#[derive(sqlx::FromRow)]
5-
struct Purchase {
4+
#[derive(sqlx::FromRow, Debug)]
5+
pub struct Purchase {
66
pub id: Uuid,
77
pub user_id: Uuid,
88
pub amount: Decimal,
@@ -21,7 +21,7 @@ pub async fn create_table(e: impl PgExecutor<'_>) -> sqlx::Result<()> {
2121
user_id uuid not null, \
2222
amount numeric not null check(amount > 0), \
2323
description text not null, \
24-
created_at timestamptz not null \
24+
created_at timestamptz not null default now() \
2525
);
2626
",
2727
)
@@ -37,12 +37,14 @@ pub async fn create_purchase(
3737
amount: Decimal,
3838
description: &str,
3939
) -> sqlx::Result<Uuid> {
40-
sqlx::query_scalar("insert into purchases(user_id, amount, description) values ($1, $2, $3)")
41-
.bind(user_id)
42-
.bind(amount)
43-
.bind(description)
44-
.fetch_one(e)
45-
.await
40+
sqlx::query_scalar(
41+
"insert into purchases(user_id, amount, description) values ($1, $2, $3) returning id",
42+
)
43+
.bind(user_id)
44+
.bind(amount)
45+
.bind(description)
46+
.fetch_one(e)
47+
.await
4648
}
4749

4850
pub async fn get_purchase(e: impl PgExecutor<'_>, id: Uuid) -> sqlx::Result<Option<Purchase>> {

examples/postgres/preferred-crates/uses-time/src/lib.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,12 @@ pub async fn create_session<D: Serialize>(
3737
data: D,
3838
valid_duration: Duration,
3939
) -> sqlx::Result<Session<D>> {
40-
let created_at = OffsetDateTime::now_utc();
40+
// Round down to the nearest second because
41+
// Postgres doesn't support precision higher than 1 microsecond anyway.
42+
let created_at = OffsetDateTime::now_utc()
43+
.replace_nanosecond(0)
44+
.expect("0 nanoseconds should be in range");
45+
4146
let expires_at = created_at + valid_duration;
4247

4348
let id: Uuid = sqlx::query_scalar(

0 commit comments

Comments
 (0)