Extract row to film / series conversion into functions
This commit is contained in:
parent
c1481517bc
commit
e29c555412
1 changed files with 35 additions and 33 deletions
|
@ -2,7 +2,7 @@ use {
|
|||
async_sqlite :: {
|
||||
* ,
|
||||
Error :: * ,
|
||||
rusqlite :: { OpenFlags , Error :: * , ffi :: ErrorCode :: * } ,
|
||||
rusqlite :: { OpenFlags , Row , Error :: * , ffi :: ErrorCode :: * } ,
|
||||
} ,
|
||||
fallible_iterator :: * ,
|
||||
std :: path :: * ,
|
||||
|
@ -23,49 +23,51 @@ 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| {
|
||||
let uuid = row . get (0) ? ;
|
||||
let name = row . get (1) ? ;
|
||||
let original_name = row . get (2) ? ;
|
||||
let release_date = row . get (3) ? ;
|
||||
let runtime_minutes = row . get (4) ? ;
|
||||
let poster_file_path = row . get :: < _ , Option <String> > (5) ?
|
||||
. map ( PathBuf :: from ) ;
|
||||
let video_file_path = row . get :: < _ , Option <String> > (6) ?
|
||||
. map ( PathBuf :: from ) ;
|
||||
|
||||
Ok ( Film {
|
||||
uuid ,
|
||||
name ,
|
||||
original_name ,
|
||||
release_date ,
|
||||
runtime_minutes ,
|
||||
poster_file_path ,
|
||||
video_file_path ,
|
||||
} )
|
||||
} )
|
||||
. map (row_to_film)
|
||||
. collect () ? ;
|
||||
|
||||
let series = sqlite_connection
|
||||
. prepare ("select * from series") ?
|
||||
. query (()) ?
|
||||
. map ( |row| {
|
||||
let uuid = row . get (0) ? ;
|
||||
let name = row . get (1) ? ;
|
||||
let original_name = row . get (2) ? ;
|
||||
let poster_file_path = row. get :: < _ , Option <String> > (3) ?
|
||||
. map ( PathBuf :: from ) ;
|
||||
|
||||
Ok ( Series { uuid , name , original_name , poster_file_path } )
|
||||
} )
|
||||
. 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) ? ;
|
||||
let release_date = row . get (3) ? ;
|
||||
let runtime_minutes = row . get (4) ? ;
|
||||
let poster_file_path = row . get :: < _ , Option <String> > (5) ?
|
||||
. map ( PathBuf :: from ) ;
|
||||
let video_file_path = row . get :: < _ , Option <String> > (6) ?
|
||||
. map ( PathBuf :: from ) ;
|
||||
|
||||
Ok ( Film {
|
||||
uuid ,
|
||||
name ,
|
||||
original_name ,
|
||||
release_date ,
|
||||
runtime_minutes ,
|
||||
poster_file_path ,
|
||||
video_file_path ,
|
||||
} )
|
||||
}
|
||||
|
||||
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) ? ;
|
||||
let poster_file_path = row. get :: < _ , Option <String> > (3) ?
|
||||
. map ( PathBuf :: from ) ;
|
||||
|
||||
Ok ( Series { uuid , name , original_name , poster_file_path } )
|
||||
}
|
||||
|
||||
impl From <Error> for ZoodexError {
|
||||
fn from ( error : Error ) -> Self {
|
||||
match error {
|
||||
|
|
Loading…
Add table
Reference in a new issue