Compare commits

...

2 commits

Author SHA1 Message Date
Ninjdai
595d28b69b refactor: remove unused imports 2025-08-04 19:58:06 +02:00
Ninjdai
08c6cfeb1f refactor: rename bnf deserializer structs to be more accurate 2025-08-04 19:55:33 +02:00
3 changed files with 12 additions and 18 deletions

View file

@ -1,13 +1,7 @@
use std::sync::{Arc, LazyLock}; use std::sync::Arc;
use argon2::PasswordHash; use axum::{extract::{FromRequestParts, Request, State}, http::{request::Parts, StatusCode}, middleware::Next, response::{IntoResponse, Response}, Json, RequestPartsExt};
use axum::{ use axum_extra::{headers::{authorization::Bearer, Authorization}, TypedHeader};
extract::{FromRequestParts, Request, State}, http::{request::Parts, HeaderMap, StatusCode}, middleware::Next, response::{IntoResponse, Response}, routing::{get, post}, Json, RequestPartsExt, Router
};
use axum_extra::{
headers::{authorization::Bearer, Authorization},
TypedHeader,
};
use jsonwebtoken::{decode, encode, DecodingKey, EncodingKey, Header, Validation}; use jsonwebtoken::{decode, encode, DecodingKey, EncodingKey, Header, Validation};
use sea_orm::{ColumnTrait, EntityTrait, QueryFilter}; use sea_orm::{ColumnTrait, EntityTrait, QueryFilter};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};

View file

@ -9,13 +9,13 @@ pub struct Response {
#[serde(rename = "numberOfRecords")] #[serde(rename = "numberOfRecords")]
records_number: u32, records_number: u32,
#[serde(rename = "records")] #[serde(rename = "records")]
records: RecordListElement record_list: RecordList
} }
#[derive(Deserialize)] #[derive(Deserialize)]
pub struct RecordListElement { pub struct RecordList {
#[serde(default, rename = "record")] #[serde(default, rename = "record")]
record: Vec<Record> records: Vec<Record>
} }
#[derive(Deserialize)] #[derive(Deserialize)]
@ -27,11 +27,11 @@ pub struct Record {
#[derive(Deserialize)] #[derive(Deserialize)]
pub struct RecordData { pub struct RecordData {
#[serde(rename = "record")] #[serde(rename = "record")]
record: RecordDataFields datafield_list: DataFieldList
} }
#[derive(Deserialize)] #[derive(Deserialize)]
pub struct RecordDataFields { pub struct DataFieldList {
#[serde(default, rename = "datafield")] #[serde(default, rename = "datafield")]
datafields: Vec<DataField> datafields: Vec<DataField>
} }
@ -89,9 +89,9 @@ pub async fn fetch_book_by_ean(web_client: &reqwest::Client, ean: &String) -> Op
log::debug!(target: "api", "BNF returned 0 records for fetch"); log::debug!(target: "api", "BNF returned 0 records for fetch");
return None; return None;
} }
let record = &v.records.record.first().unwrap(); let record = &v.record_list.records.first().unwrap();
let data_dubfield = record.record_data.record.datafields.iter().find(|d| d.tag == "200").unwrap().subfields.clone(); let data_dubfield = record.record_data.datafield_list.datafields.iter().find(|d| d.tag == "200").unwrap().subfields.clone();
let price_new = match record.record_data.record.datafields.iter().find(|d| d.tag == "010") { let price_new = match record.record_data.datafield_list.datafields.iter().find(|d| d.tag == "010") {
Some(f) => f.subfields.iter().find(|p| p.code=="d").map_or(None, |v| Some(v.value.clone())), Some(f) => f.subfields.iter().find(|p| p.code=="d").map_or(None, |v| Some(v.value.clone())),
None => None None => None
}; };

View file

@ -1,7 +1,7 @@
use std::{fmt::Display, sync::Arc}; use std::{fmt::Display, sync::Arc};
use argon2::{password_hash::{SaltString}, Argon2, PasswordHasher}; use argon2::{password_hash::{SaltString}, Argon2, PasswordHasher};
use inquire::{min_length, prompt_text, Confirm, Password, Select, Text}; use inquire::{min_length, Confirm, Password, Select, Text};
use password_hash::rand_core::OsRng; use password_hash::rand_core::OsRng;
use sea_orm::{ActiveModelTrait, ActiveValue::{NotSet, Set}, ColumnTrait, DatabaseConnection, EntityTrait, ModelTrait, QueryFilter}; use sea_orm::{ActiveModelTrait, ActiveValue::{NotSet, Set}, ColumnTrait, DatabaseConnection, EntityTrait, ModelTrait, QueryFilter};