Issues vscode rreading errors
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
use axum::{
|
||||
http::StatusCode,
|
||||
response::{IntoResponse, Response},
|
||||
Json, Router, extract::State,
|
||||
routing::post,
|
||||
};
|
||||
use crate::auth::structs::AppState;
|
||||
use sqlx::query_as;
|
||||
use crate::company::structs::Company;
|
||||
|
||||
pub async fn company_routes() -> Router<AppState> {
|
||||
let router = Router::new().route("/company", post(update_or_create_company));
|
||||
router
|
||||
}
|
||||
|
||||
|
||||
pub async fn update_or_create_company(
|
||||
State(state): State<AppState>,
|
||||
Json(company): Json<Company>,
|
||||
) -> Response {
|
||||
let result = query_as::<_, Company>(
|
||||
"SELECT * FROM company WHERE id = $1",
|
||||
)
|
||||
.bind(company.id)
|
||||
.fetch_optional(&*state.db)
|
||||
.await;
|
||||
|
||||
match result {
|
||||
Ok(existing_company) => {
|
||||
match existing_company {
|
||||
Some(_) => {
|
||||
// Update existing company
|
||||
let result = sqlx::query(
|
||||
"UPDATE company SET active = $2, name = $3, address = $4, town = $5, state = $6, phone = $7, owner_name = $8, owner_phone_number = $9, email = $10, user_id = $11 WHERE id = $1"
|
||||
)
|
||||
.bind(company.id)
|
||||
.bind(company.active)
|
||||
.bind(company.name)
|
||||
.bind(company.address)
|
||||
.bind(company.town)
|
||||
.bind(company.state)
|
||||
.bind(company.phone)
|
||||
.bind(company.owner_name)
|
||||
.bind(company.owner_phone_number)
|
||||
.bind(company.email)
|
||||
.bind(company.user_id)
|
||||
.execute(&*state.db)
|
||||
.await;
|
||||
|
||||
match result {
|
||||
Ok(_) => (StatusCode::OK, "Company updated successfully".to_string()).into_response(),
|
||||
Err(e) => (StatusCode::INTERNAL_SERVER_ERROR, format!("Error updating company: {}", e)).into_response(),
|
||||
}
|
||||
}
|
||||
None => {
|
||||
// Create new company
|
||||
let result = sqlx::query(
|
||||
"INSERT INTO company (active, created, name, address, town, state, phone, owner_name, owner_phone_number, email, user_id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)"
|
||||
)
|
||||
.bind(company.active)
|
||||
.bind(chrono::Utc::now().naive_utc().date())
|
||||
.bind(company.name)
|
||||
.bind(company.address)
|
||||
.bind(company.town)
|
||||
.bind(company.state)
|
||||
.bind(company.phone)
|
||||
.bind(company.owner_name)
|
||||
.bind(company.owner_phone_number)
|
||||
.bind(company.email)
|
||||
.bind(company.user_id)
|
||||
.execute(&*state.db)
|
||||
.await;
|
||||
|
||||
match result {
|
||||
Ok(_) => (StatusCode::CREATED, "Company created successfully".to_string()).into_response(),
|
||||
Err(e) => (StatusCode::INTERNAL_SERVER_ERROR, format!("Error creating company: {}", e)).into_response(),
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(e) => (StatusCode::INTERNAL_SERVER_ERROR, format!("Error checking for existing company: {}", e)).into_response(),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user