add customer record insertion on successful creation
This commit is contained in:
parent
5aea86d8af
commit
7d78302427
2 changed files with 17 additions and 6 deletions
|
@ -10,6 +10,7 @@ create table if not exists customers (
|
||||||
);
|
);
|
||||||
create index if not exists customers_username_dex on customers (lower(username));
|
create index if not exists customers_username_dex on customers (lower(username));
|
||||||
create index if not exists customers_email_dex on customers (lower(billing_email));
|
create index if not exists customers_email_dex on customers (lower(billing_email));
|
||||||
|
create index if not exists customers_receipt_dex on customers (receipt);
|
||||||
create index if not exists customers_invitation_dex on customers (invitation); -- does this need to be created? it's already a foreign key
|
create index if not exists customers_invitation_dex on customers (invitation); -- does this need to be created? it's already a foreign key
|
||||||
|
|
||||||
create trigger if not exists update_last_updated_customers
|
create trigger if not exists update_last_updated_customers
|
||||||
|
|
|
@ -28,7 +28,7 @@ lazy_static! {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Displays the signup form.
|
/// Displays the signup form.
|
||||||
pub async fn get_signup(_db: State<SqlitePool>) -> impl IntoResponse {
|
pub async fn get_signup() -> impl IntoResponse {
|
||||||
SignupPage {
|
SignupPage {
|
||||||
monthly_link: Some((*MONTHLY_LINK).to_string()),
|
monthly_link: Some((*MONTHLY_LINK).to_string()),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
|
@ -37,12 +37,13 @@ pub async fn get_signup(_db: State<SqlitePool>) -> impl IntoResponse {
|
||||||
|
|
||||||
/// Receives the form with the user signup fields filled out.
|
/// Receives the form with the user signup fields filled out.
|
||||||
pub async fn post_signup(
|
pub async fn post_signup(
|
||||||
db: State<SqlitePool>,
|
State(db): State<SqlitePool>,
|
||||||
Form(form): Form<SignupForm>,
|
Form(form): Form<SignupForm>,
|
||||||
) -> Result<impl IntoResponse, CreateUserError> {
|
) -> Result<impl IntoResponse, CreateUserError> {
|
||||||
let user = validate_signup(&form).await?;
|
let user = validate_signup(&form).await?;
|
||||||
if create_user(&user) {
|
if create_user(&user) {
|
||||||
log::info!("Created user {user:?}");
|
log::info!("Created user {user:?}");
|
||||||
|
insert_user(&db, &form.username, form.receipt.trim(), None).await;
|
||||||
Ok(SignupSuccessPage(user))
|
Ok(SignupSuccessPage(user))
|
||||||
} else {
|
} else {
|
||||||
Err(CreateUserError(CreateUserErrorKind::UnknownEorr))
|
Err(CreateUserError(CreateUserErrorKind::UnknownEorr))
|
||||||
|
@ -50,10 +51,7 @@ pub async fn post_signup(
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Redirected from Stripe with the receipt of payment.
|
/// Redirected from Stripe with the receipt of payment.
|
||||||
pub async fn payment_success(
|
pub async fn payment_success(receipt: Option<Path<String>>) -> impl IntoResponse {
|
||||||
db: State<SqlitePool>,
|
|
||||||
receipt: Option<Path<String>>,
|
|
||||||
) -> impl IntoResponse {
|
|
||||||
let receipt = if let Some(Path(receipt)) = receipt {
|
let receipt = if let Some(Path(receipt)) = receipt {
|
||||||
receipt
|
receipt
|
||||||
} else {
|
} else {
|
||||||
|
@ -70,6 +68,18 @@ pub async fn payment_success(
|
||||||
//-************************************************************************
|
//-************************************************************************
|
||||||
// helpers
|
// helpers
|
||||||
//-************************************************************************
|
//-************************************************************************
|
||||||
|
async fn insert_user(db: &SqlitePool, username: &str, receipt: &str, invitation: Option<&str>) {
|
||||||
|
sqlx::query!(
|
||||||
|
"insert into customers (username, receipt, invitation) values (?, ?, ?)",
|
||||||
|
username,
|
||||||
|
receipt,
|
||||||
|
invitation
|
||||||
|
)
|
||||||
|
.execute(db)
|
||||||
|
.await
|
||||||
|
.unwrap_or_default();
|
||||||
|
}
|
||||||
|
|
||||||
fn create_user(user: &User) -> bool {
|
fn create_user(user: &User) -> bool {
|
||||||
let token = &*ADMIN_TOKEN;
|
let token = &*ADMIN_TOKEN;
|
||||||
let url = &*FORGEJO_URL;
|
let url = &*FORGEJO_URL;
|
||||||
|
|
Loading…
Reference in a new issue