Merge pull request #1896 from zed-industries/fix-invites
Once we email someone an invite, honor the invitation
This commit is contained in:
commit
f4e9759f26
1 changed files with 10 additions and 36 deletions
|
@ -350,25 +350,6 @@ impl Db<sqlx::Postgres> {
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
if let Some(inviting_user_id) = inviting_user_id {
|
if let Some(inviting_user_id) = inviting_user_id {
|
||||||
let id: Option<UserId> = sqlx::query_scalar(
|
|
||||||
"
|
|
||||||
UPDATE users
|
|
||||||
SET invite_count = invite_count - 1
|
|
||||||
WHERE id = $1 AND invite_count > 0
|
|
||||||
RETURNING id
|
|
||||||
",
|
|
||||||
)
|
|
||||||
.bind(&inviting_user_id)
|
|
||||||
.fetch_optional(&mut tx)
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
if id.is_none() {
|
|
||||||
Err(Error::Http(
|
|
||||||
StatusCode::UNAUTHORIZED,
|
|
||||||
"no invites remaining".to_string(),
|
|
||||||
))?;
|
|
||||||
}
|
|
||||||
|
|
||||||
sqlx::query(
|
sqlx::query(
|
||||||
"
|
"
|
||||||
INSERT INTO contacts
|
INSERT INTO contacts
|
||||||
|
@ -453,31 +434,24 @@ impl Db<sqlx::Postgres> {
|
||||||
Err(anyhow!("email address is already in use"))?;
|
Err(anyhow!("email address is already in use"))?;
|
||||||
}
|
}
|
||||||
|
|
||||||
let row: Option<(UserId, i32)> = sqlx::query_as(
|
let inviting_user_id_with_invites: Option<UserId> = sqlx::query_scalar(
|
||||||
"
|
"
|
||||||
SELECT id, invite_count
|
UPDATE users
|
||||||
FROM users
|
SET invite_count = invite_count - 1
|
||||||
WHERE invite_code = $1
|
WHERE invite_code = $1 AND invite_count > 0
|
||||||
|
RETURNING id
|
||||||
",
|
",
|
||||||
)
|
)
|
||||||
.bind(code)
|
.bind(code)
|
||||||
.fetch_optional(&mut tx)
|
.fetch_optional(&mut tx)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let (inviter_id, invite_count) = match row {
|
let Some(inviter_id) = inviting_user_id_with_invites else {
|
||||||
Some(row) => row,
|
return Err(Error::Http(
|
||||||
None => Err(Error::Http(
|
|
||||||
StatusCode::NOT_FOUND,
|
|
||||||
"invite code not found".to_string(),
|
|
||||||
))?,
|
|
||||||
};
|
|
||||||
|
|
||||||
if invite_count == 0 {
|
|
||||||
Err(Error::Http(
|
|
||||||
StatusCode::UNAUTHORIZED,
|
StatusCode::UNAUTHORIZED,
|
||||||
"no invites remaining".to_string(),
|
"unable to find an invite code with invites remaining".to_string(),
|
||||||
))?;
|
));
|
||||||
}
|
};
|
||||||
|
|
||||||
let email_confirmation_code: String = sqlx::query_scalar(
|
let email_confirmation_code: String = sqlx::query_scalar(
|
||||||
"
|
"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue