51 lines
1.6 KiB
Rust
51 lines
1.6 KiB
Rust
use std::fs::File;
|
|
use std::io::{BufReader, BufWriter};
|
|
use crate::{filename, err, DB, uid};
|
|
use crate::{VideoStore, VideoMeta, VideoMetaEntry};
|
|
|
|
impl VideoStore for DB {
|
|
fn new_video(name: &str, desc: &str) -> err::Result<()> {
|
|
let fname = filename();
|
|
let file = File::open(&fname)?;
|
|
let reader = BufReader::new(file);
|
|
|
|
// Messing with data we care about
|
|
let id = uid()?;
|
|
let mut data: DB = serde_json::from_reader(reader)?;
|
|
let entry = VideoMetaEntry {
|
|
name: name.to_string(),
|
|
desc: if desc.len() != 0 { None } else { Some(desc.to_string()) }
|
|
};
|
|
// update in mem-cache
|
|
data.videos.insert(id, entry);
|
|
// update the content on disk
|
|
let file = File::open(&fname)?;
|
|
let writer = BufWriter::new(file);
|
|
serde_json::to_writer(writer, &data)?;
|
|
Ok(())
|
|
}
|
|
fn del_video(id: String) -> err::Result<()> {
|
|
let fname = filename();
|
|
let file = File::open(&fname)?;
|
|
let reader = BufReader::new(file);
|
|
|
|
let mut data: DB = serde_json::from_reader(file)?;
|
|
data.videos.remove(id);
|
|
|
|
let file = File::open(&fname)?;
|
|
let writer = BufWriter::new(file);
|
|
serde_json::to_writer(writer, &data)?;
|
|
Ok(())
|
|
}
|
|
fn get_video(id: Option<String>, name: Option<&str>) -> err::Result<VideoMeta> {
|
|
todo!()
|
|
}
|
|
fn rename_video(id: String, new: &str) -> err::Result<()> {
|
|
todo!()
|
|
}
|
|
fn redescribe_video(id: String, new: &str) -> err::Result<()> {
|
|
todo!()
|
|
}
|
|
}
|
|
|