diff options
Diffstat (limited to 'src/handlers/admin.rs')
| -rw-r--r-- | src/handlers/admin.rs | 30 |
1 files changed, 7 insertions, 23 deletions
diff --git a/src/handlers/admin.rs b/src/handlers/admin.rs index bdb2b40..ca18ebc 100644 --- a/src/handlers/admin.rs +++ b/src/handlers/admin.rs @@ -10,8 +10,8 @@ use axum::response::{IntoResponse, Response}; use axum::{Extension, Json}; use subtle::ConstantTimeEq; -use crate::db::product::Product; use crate::db::story::Story; +use crate::db::ProductDatabaseHandler; use crate::error::AppError; use super::ApiContext; @@ -90,30 +90,14 @@ pub async fn upload_story( return Ok(StatusCode::BAD_REQUEST.into_response()); }; - let time = std::time::SystemTime::now(); - let uploaddate = time.duration_since(std::time::UNIX_EPOCH)?.as_millis() as i64; - - let mut tx = ctx.pool.begin().await?; - let product = sqlx::query_as!( - Product, - "INSERT INTO product (name, description, uploaddate, updatedate) VALUES ($1, $2, $3, $4) RETURNING id, name, description, uploaddate, updatedate", - name, - description, - uploaddate, - uploaddate) - .fetch_one(&mut *tx) - .await?; - - let story = sqlx::query_as!( - Story, - "INSERT INTO story (language, pdf, epub, pid) VALUES ($1, $2, $3, $4) RETURNING id, language, pdf, epub, pid", language, + let story_template = Story { + id: 0, + pid: 0, + language, pdf, epub, - product.id) - .fetch_one(&mut *tx) - .await?; - - tx.commit().await?; + }; + let story = story_template.post(&ctx.pool, name, description).await?; Ok((StatusCode::CREATED, Json(story)).into_response()) } |
