Skip to content

Commit a9410b2

Browse files
committed
Introduce user duplication prevention
1 parent 5950699 commit a9410b2

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

engine/.sqlx/query-67a9dec4afb27978967b76a27218965537dffc57dcc81eca011d0e0dd66ab856.json

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

engine/src/models/user/mod.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,21 @@ impl User {
3232
let name = name.as_ref();
3333
let password = password.as_ref();
3434

35+
// check if no user with this name already exists
36+
let exists = query_scalar!(
37+
"SELECT COUNT(*) FROM users WHERE name = $1",
38+
name
39+
)
40+
.fetch_one(&db.pool)
41+
.await?
42+
.unwrap_or(0)
43+
> 0;
44+
45+
if exists {
46+
// TODO: nicer `Username taken` error
47+
return Err(sqlx::Error::RowNotFound);
48+
}
49+
3550
let user = query_as!(
3651
User,
3752
"INSERT INTO users (user_id, name, password, admin) VALUES ($1, $2, $3, $4) RETURNING *",

0 commit comments

Comments
 (0)