+ More meta-cache backend for video store
This commit is contained in:
parent
caed1444c1
commit
678dd3d7ee
@ -1,14 +1,50 @@
|
|||||||
use std::collections::HashMap;
|
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::BufReader;
|
use std::io::{BufReader, BufWriter};
|
||||||
use std::io::BufWriter;
|
use crate::{filename, err, DB, uid};
|
||||||
use crate::{err, DB, dev_urandom, VideoStore};
|
use crate::{VideoStore, VideoMeta, VideoMetaEntry};
|
||||||
|
|
||||||
impl VideoStore for DB {
|
impl VideoStore for DB {
|
||||||
fn new_video(name: &str, desc: &str) -> err::Result<()>;
|
fn new_video(name: &str, desc: &str) -> err::Result<()> {
|
||||||
fn del_video(id: String) -> err::Result<()>;
|
let fname = filename();
|
||||||
fn get_video(id: Option<String>, name: Option<&str>) -> err::Result<VideoMeta>;
|
let file = File::open(&fname)?;
|
||||||
fn rename_video(id: String, new: &str) -> err::Result<()>;
|
let reader = BufReader::new(file);
|
||||||
fn redescribe_video(id: String, new: &str) -> err::Result<()>;
|
|
||||||
|
// 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!()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user