Can import data from FinancesManager
This commit is contained in:
40
moneymgr_backend/src/controllers/backup_controller.rs
Normal file
40
moneymgr_backend/src/controllers/backup_controller.rs
Normal file
@ -0,0 +1,40 @@
|
||||
use crate::controllers::HttpResult;
|
||||
use crate::converters::finances_manager_converter::FinancesManagerFile;
|
||||
use crate::extractors::auth_extractor::AuthExtractor;
|
||||
use crate::extractors::file_extractor::FileExtractor;
|
||||
use crate::models::accounts::AccountType;
|
||||
use crate::services::accounts_service::UpdateAccountQuery;
|
||||
use crate::services::movements_service::UpdateMovementQuery;
|
||||
use crate::services::{accounts_service, movements_service};
|
||||
use actix_web::HttpResponse;
|
||||
|
||||
/// Import data from a [FinancesManager](https://gitlab.com/pierre42100/cpp-financesmanager) file
|
||||
pub async fn import_financesmanager(auth: AuthExtractor, file: FileExtractor) -> HttpResult {
|
||||
let file = FinancesManagerFile::parse(&String::from_utf8_lossy(&file.buff))?;
|
||||
|
||||
// Create each account & push the movements independently
|
||||
for file_account in file.accounts {
|
||||
let account = accounts_service::create(
|
||||
auth.user_id(),
|
||||
&UpdateAccountQuery {
|
||||
name: file_account.name,
|
||||
r#type: AccountType::Cash,
|
||||
},
|
||||
)
|
||||
.await?;
|
||||
|
||||
for file_movement in file_account.movements {
|
||||
movements_service::create(&UpdateMovementQuery {
|
||||
account_id: account.id(),
|
||||
time: file_movement.time,
|
||||
label: file_movement.label,
|
||||
file_id: None,
|
||||
amount: file_movement.amount,
|
||||
checked: false,
|
||||
})
|
||||
.await?;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(HttpResponse::Accepted().finish())
|
||||
}
|
Reference in New Issue
Block a user