|
@@ -2,6 +2,7 @@ use actix_web::{post, web, HttpResponse, HttpRequest};
|
|
|
use mongodb::Database;
|
|
use mongodb::Database;
|
|
|
|
|
|
|
|
use crate::models::transaction::Transaction;
|
|
use crate::models::transaction::Transaction;
|
|
|
|
|
+use crate::models::account::Account;
|
|
|
use crate::app_error::AppError;
|
|
use crate::app_error::AppError;
|
|
|
use crate::auth::user_auth;
|
|
use crate::auth::user_auth;
|
|
|
use crate::dto::transaction::CreateInput;
|
|
use crate::dto::transaction::CreateInput;
|
|
@@ -14,6 +15,10 @@ pub async fn create_route(
|
|
|
) -> Result<HttpResponse, AppError> {
|
|
) -> Result<HttpResponse, AppError> {
|
|
|
let user = user_auth(&db, &request).await?;
|
|
let user = user_auth(&db, &request).await?;
|
|
|
let transaction_collection = db.collection::<Transaction>("transactions");
|
|
let transaction_collection = db.collection::<Transaction>("transactions");
|
|
|
|
|
+
|
|
|
|
|
+ let account_collection = db.collection::<Account>("accounts");
|
|
|
|
|
+ Account::user_owns(&account_collection, &user, &body.account).await?;
|
|
|
|
|
+
|
|
|
let id = Transaction::insert(&transaction_collection, body.into_inner()).await?;
|
|
let id = Transaction::insert(&transaction_collection, body.into_inner()).await?;
|
|
|
let transaction = Transaction::find_one(&transaction_collection, id).await?;
|
|
let transaction = Transaction::find_one(&transaction_collection, id).await?;
|
|
|
Ok(HttpResponse::Ok().json(transaction.response()))
|
|
Ok(HttpResponse::Ok().json(transaction.response()))
|