post_archiver/query/
file_meta.rs1use rusqlite::OptionalExtension;
4
5use crate::{
6 manager::{PostArchiverConnection, PostArchiverManager},
7 FileMeta, FileMetaId, PostId,
8};
9
10use super::FromQuery;
11
12impl<C: PostArchiverConnection> PostArchiverManager<C> {
13 pub fn get_file_meta(&self, id: FileMetaId) -> crate::error::Result<Option<FileMeta>> {
15 let mut stmt = self
16 .conn()
17 .prepare_cached("SELECT * FROM file_metas WHERE id = ?")?;
18 Ok(stmt.query_row([id], FileMeta::from_row).optional()?)
19 }
20
21 pub fn find_file_meta(
23 &self,
24 post: PostId,
25 filename: &str,
26 ) -> crate::error::Result<Option<FileMetaId>> {
27 let mut stmt = self
28 .conn()
29 .prepare_cached("SELECT id FROM file_metas WHERE post = ? AND filename = ?")?;
30 Ok(stmt
31 .query_row(rusqlite::params![post, filename], |row| row.get(0))
32 .optional()?)
33 }
34}