11#![ deny( clippy:: pedantic) ]
22#![ allow( clippy:: used_underscore_binding) ]
3+ use chrono:: { DateTime , Utc } ;
34use episko_lib:: {
45 config:: ConfigHandler ,
56 database:: DatabaseHandler ,
67 files:: File as _,
7- metadata:: { metadata_handler:: MetadataHandler , Metadata } ,
8+ metadata:: { BuildSystem , Category , Ide , Language , Metadata , metadata_handler:: MetadataHandler } ,
89} ;
10+ use serde:: { Deserialize , Serialize , de:: DeserializeOwned } ;
911use tauri:: Manager ;
1012
1113mod commands;
12- use commands:: { get_all, get_with_id, load_from_directory, load_from_file} ;
14+ use commands:: { get_all, get_with_id, load_from_directory, load_from_file, update_metadata} ;
15+ use std:: path:: PathBuf ;
1316use tokio:: sync:: Mutex ;
17+ use uuid:: Uuid ;
1418
1519struct AppState {
1620 pub db : DatabaseHandler ,
@@ -22,6 +26,59 @@ impl AppState {
2226 }
2327}
2428
29+ /// Dto data transfer object
30+ #[ derive( Serialize , Deserialize , Debug ) ]
31+ struct MetadataDto {
32+ id : Uuid ,
33+ directory : PathBuf ,
34+ title : String ,
35+ description : Option < String > ,
36+ categories : Vec < Category > ,
37+ languages : Vec < Language > ,
38+ build_systems : Vec < BuildSystem > ,
39+ preffered_ide : Option < Ide > ,
40+ repository_url : Option < String > ,
41+ created : DateTime < Utc > ,
42+ updated : DateTime < Utc > ,
43+ }
44+
45+ /// Dco data creation object
46+ #[ derive( Serialize , Deserialize , Debug ) ]
47+ struct MetadataDco {
48+ directory : PathBuf ,
49+ title : String ,
50+ description : Option < String > ,
51+ categories : Vec < Category > ,
52+ languages : Vec < Language > ,
53+ build_systems : Vec < BuildSystem > ,
54+ preffered_ide : Option < Ide > ,
55+ repository_url : Option < String > ,
56+ }
57+
58+ impl MetadataDco {
59+ fn create ( ) -> Result < Metadata , String > {
60+ todo ! ( )
61+ }
62+ }
63+
64+ impl From < Metadata > for MetadataDto {
65+ fn from ( metadata : Metadata ) -> MetadataDto {
66+ MetadataDto {
67+ id : metadata. id ,
68+ directory : metadata. directory ,
69+ title : metadata. title ,
70+ description : metadata. description ,
71+ categories : metadata. categories ,
72+ languages : metadata. languages ,
73+ build_systems : metadata. build_systems ,
74+ preffered_ide : metadata. preffered_ide ,
75+ repository_url : metadata. repository_url ,
76+ created : metadata. created ,
77+ updated : metadata. updated ,
78+ }
79+ }
80+ }
81+
2582/// !TODO!
2683///
2784/// # Errors
@@ -61,6 +118,7 @@ pub async fn run() -> Result<(), Box<dyn std::error::Error>> {
61118 . invoke_handler ( tauri:: generate_handler![
62119 get_all,
63120 get_with_id,
121+ update_metadata,
64122 load_from_file,
65123 load_from_directory,
66124 ] )
0 commit comments