Extract row to film / series conversion into functions

This commit is contained in:
Reinout Meliesie 2024-12-23 23:25:25 +01:00
parent c1481517bc
commit e29c555412
Signed by: zedfrigg
GPG key ID: 3AFCC06481308BC6

View file

@ -2,7 +2,7 @@ use {
async_sqlite :: {
* ,
Error :: * ,
rusqlite :: { OpenFlags , Error :: * , ffi :: ErrorCode :: * } ,
rusqlite :: { OpenFlags , Row , Error :: * , ffi :: ErrorCode :: * } ,
} ,
fallible_iterator :: * ,
std :: path :: * ,
@ -23,7 +23,20 @@ pub async fn get_collection_from_file () -> Result <Collection> {
let films = sqlite_connection
. prepare ("select * from films order by release_date desc") ?
. query (()) ?
. map ( |row| {
. map (row_to_film)
. collect () ? ;
let series = sqlite_connection
. prepare ("select * from series") ?
. query (()) ?
. map (row_to_series)
. collect () ? ;
Ok ( Collection { films , series } )
} ) . await ? ;
Ok (collection)
}
fn row_to_film ( row : & Row ) -> rusqlite :: Result <Film> {
let uuid = row . get (0) ? ;
let name = row . get (1) ? ;
let original_name = row . get (2) ? ;
@ -43,13 +56,9 @@ pub async fn get_collection_from_file () -> Result <Collection> {
poster_file_path ,
video_file_path ,
} )
} )
. collect () ? ;
}
let series = sqlite_connection
. prepare ("select * from series") ?
. query (()) ?
. map ( |row| {
fn row_to_series ( row : & Row ) -> rusqlite :: Result <Series> {
let uuid = row . get (0) ? ;
let name = row . get (1) ? ;
let original_name = row . get (2) ? ;
@ -57,13 +66,6 @@ pub async fn get_collection_from_file () -> Result <Collection> {
. map ( PathBuf :: from ) ;
Ok ( Series { uuid , name , original_name , poster_file_path } )
} )
. collect () ? ;
Ok ( Collection { films , series } )
} ) . await ? ;
Ok (collection)
}
impl From <Error> for ZoodexError {