Adapted to the new database schema.

This commit is contained in:
Martin Brodbeck 2021-08-06 15:10:55 +02:00
parent 8ef3238ac3
commit 56624427d5
1 changed files with 18 additions and 10 deletions

View File

@ -17,9 +17,17 @@ pub struct BookEntry {
fn get_epubs_from_database(tx: &Transaction) -> Vec<BookEntry> { fn get_epubs_from_database(tx: &Transaction) -> Vec<BookEntry> {
let mut book_entries = Vec::new(); let mut book_entries = Vec::new();
let mut stmt = tx let version: i32 = tx
.prepare( .query_row(r#"SELECT id FROM version"#, [], |r| r.get(0))
r#" .unwrap();
let books_or_files = match version {
x if x >= 38 => "files",
_ => "books",
};
let stmt_str = format!(
r#"
SELECT books.id, folders.name, files.filename, books.firstauthor, SELECT books.id, folders.name, files.filename, books.firstauthor,
books.author, genres.name, first_author_letter, series books.author, genres.name, first_author_letter, series
FROM books_impl books JOIN files FROM books_impl books JOIN files
@ -30,10 +38,12 @@ fn get_epubs_from_database(tx: &Transaction) -> Vec<BookEntry> {
ON books.id = btg.bookid ON books.id = btg.bookid
LEFT OUTER JOIN genres LEFT OUTER JOIN genres
ON genres.id = btg.genreid ON genres.id = btg.genreid
WHERE files.storageid = 1 AND (books.ext = 'epub' OR files.filename LIKE '%.epub') WHERE files.storageid = 1 AND {}.ext = 'epub'
ORDER BY books.id"#, ORDER BY books.id"#,
) &books_or_files
.unwrap(); );
let mut stmt = tx.prepare(&stmt_str).unwrap();
let mut rows = stmt.query([]).unwrap(); let mut rows = stmt.query([]).unwrap();
@ -233,10 +243,8 @@ pub fn fix_db_entries() -> Statistics {
ON CONFLICT DO NOTHING"#, ON CONFLICT DO NOTHING"#,
) )
.unwrap(); .unwrap();
stmt.execute( stmt.execute(named_params![":bookid": &entry.id, ":genre": &epub_metadata.genre])
named_params![":bookid": &entry.id, ":genre": &epub_metadata.genre], .unwrap();
)
.unwrap();
stat.genres_fixed = stat.genres_fixed + 1; stat.genres_fixed = stat.genres_fixed + 1;
} }