Skip to main content

rs_tar2sqlite/
sqlite.rs

1use std::io;
2
3use rusqlite::Statement;
4
5use crate::core::TarEntry;
6
7pub struct Stmt<'a>(pub Statement<'a>);
8
9impl<'a> Stmt<'a> {
10    pub fn upsert(&mut self, ent: &TarEntry) -> Result<usize, io::Error> {
11        let name: &str = &ent.name;
12        let mode: u32 = ent.mode;
13        let modified_unixtime: u64 = ent.modified_unixtime;
14        let mtime: i64 = modified_unixtime.try_into().map_err(io::Error::other)?;
15        let size: u64 = ent.data.len() as u64;
16        let sz: i64 = size.try_into().map_err(io::Error::other)?;
17        let data: &[u8] = &ent.data;
18        self.0
19            .execute(rusqlite::params![name, mode, mtime, sz, data,])
20            .map_err(io::Error::other)
21    }
22}