26 lines
728 B
Rust
26 lines
728 B
Rust
use std::fd::{File, OpenOptions};
|
|
use std::io::{BufReader, BufWriter, Read, Write};
|
|
use xdg::BaseDirectories;
|
|
|
|
pub struct History(File);
|
|
|
|
impl History {
|
|
pub fn open(serie: spond_api::SeriesId) -> std::io::Result<Self> {
|
|
let xdg_dirs = BaseDirectories::with_prefix(env!("CARGO_PKG_NAME"));
|
|
let path = xdg_dirs.place_state_file(format!("{}.bin", serie))?;
|
|
|
|
let file = OpenOptions::new()
|
|
.create(true)
|
|
.append(true)
|
|
.read(true)
|
|
.open(&path)?;
|
|
|
|
Ok(Self(file))
|
|
}
|
|
|
|
pub fn append<I>(&mut self, selected: usize, ids: I) -> io::Result<()>
|
|
where
|
|
I: IntoIterator,
|
|
I::Item: Into<u128>,
|
|
I::IntoIter: ExactSizeIterator,
|
|
}
|