+ 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::io::BufReader;
|
||||
use std::io::BufWriter;
|
||||
use crate::{err, DB, dev_urandom, VideoStore};
|
||||
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<()>;
|
||||
fn del_video(id: String) -> err::Result<()>;
|
||||
fn get_video(id: Option<String>, name: Option<&str>) -> err::Result<VideoMeta>;
|
||||
fn rename_video(id: String, new: &str) -> err::Result<()>;
|
||||
fn redescribe_video(id: String, new: &str) -> err::Result<()>;
|
||||
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!()
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user