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 :: {
|
async_sqlite :: {
|
||||||
* ,
|
* ,
|
||||||
Error :: * ,
|
Error :: * ,
|
||||||
rusqlite :: { OpenFlags , Error :: * , ffi :: ErrorCode :: * } ,
|
rusqlite :: { OpenFlags , Row , Error :: * , ffi :: ErrorCode :: * } ,
|
||||||
} ,
|
} ,
|
||||||
fallible_iterator :: * ,
|
fallible_iterator :: * ,
|
||||||
std :: path :: * ,
|
std :: path :: * ,
|
||||||
|
@ -23,49 +23,51 @@ pub async fn get_collection_from_file () -> Result <Collection> {
|
||||||
let films = sqlite_connection
|
let films = sqlite_connection
|
||||||
. prepare ("select * from films order by release_date desc") ?
|
. prepare ("select * from films order by release_date desc") ?
|
||||||
. query (()) ?
|
. query (()) ?
|
||||||
. map ( |row| {
|
. map (row_to_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 ,
|
|
||||||
} )
|
|
||||||
} )
|
|
||||||
. collect () ? ;
|
. collect () ? ;
|
||||||
|
|
||||||
let series = sqlite_connection
|
let series = sqlite_connection
|
||||||
. prepare ("select * from series") ?
|
. prepare ("select * from series") ?
|
||||||
. query (()) ?
|
. query (()) ?
|
||||||
. map ( |row| {
|
. map (row_to_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 } )
|
|
||||||
} )
|
|
||||||
. collect () ? ;
|
. collect () ? ;
|
||||||
|
|
||||||
Ok ( Collection { films , series } )
|
Ok ( Collection { films , series } )
|
||||||
} ) . await ? ;
|
} ) . await ? ;
|
||||||
|
|
||||||
Ok (collection)
|
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 {
|
impl From <Error> for ZoodexError {
|
||||||
fn from ( error : Error ) -> Self {
|
fn from ( error : Error ) -> Self {
|
||||||
match error {
|
match error {
|
||||||
|
|
Loading…
Add table
Reference in a new issue