pridaj knihu

This commit is contained in:
Priec
2026-02-01 21:18:44 +01:00
parent 675f953866
commit bcb2223587
3 changed files with 70 additions and 3 deletions

View File

@@ -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(())
}
}