pridaj knihu
This commit is contained in:
40
src/logic.rs
40
src/logic.rs
@@ -2,6 +2,8 @@
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
use std::fs;
|
||||
use std::error::Error;
|
||||
|
||||
#[derive(Default, Serialize, Deserialize, PartialEq)]
|
||||
enum Stav {
|
||||
@@ -66,7 +68,39 @@ struct Kniznica {
|
||||
}
|
||||
|
||||
impl Kniznica {
|
||||
// fn pridaj_knihu
|
||||
// fn odstran_knihu
|
||||
// fn daj_knihu_podla_isbn
|
||||
// Asociovana funkcia
|
||||
fn nacitaj_zo_suboru(cesta: &std::path::PathBuf) -> Option<Self>{
|
||||
let obsah = match std::fs::read_to_string(cesta) {
|
||||
Ok(text) => text,
|
||||
Err(_) => return None,
|
||||
};
|
||||
let kniznica = match serde_json::from_str(obsah.as_str()) {
|
||||
Ok(k) => k,
|
||||
Err(_) => return None,
|
||||
};
|
||||
Some(kniznica)
|
||||
}
|
||||
// Metoda
|
||||
fn uloz_do_suboru(&self, cesta: &std::path::PathBuf) -> bool {
|
||||
let converted = match serde_json::to_string(&self) {
|
||||
Ok(k) => k,
|
||||
Err(_) => return false,
|
||||
};
|
||||
match std::fs::write(cesta, converted) {
|
||||
Ok(_) => return true,
|
||||
Err(_) => return false,
|
||||
};
|
||||
}
|
||||
|
||||
fn pridaj_knihu(&mut self, nova_kniha: Kniha) -> Result<(), ()> {
|
||||
if (&self.knihy).len() > 0 {
|
||||
for x in &self.knihy {
|
||||
if x.isbn == nova_kniha.isbn {
|
||||
return Err(());
|
||||
}
|
||||
}
|
||||
}
|
||||
self.knihy.push(nova_kniha);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user