@@ -5,86 +5,100 @@ use crate::AppState;
5
5
6
6
#[ tauri:: command]
7
7
pub async fn get_projects ( app_state : State < ' _ , AppState > ) -> Result < Vec < String > > {
8
- let project_db = app_state. project_db . lock ( ) . await ;
9
- let project_db = project_db. as_ref ( ) . unwrap ( ) ;
10
-
11
- let db = sled:: open ( & project_db. db_path ) . unwrap ( ) ;
12
- let projects = db
13
- . iter ( )
14
- . map ( |r| {
15
- let ( project, _) = r. unwrap ( ) ;
16
- String :: from_utf8 ( project. to_vec ( ) ) . unwrap ( )
17
- } )
18
- . collect ( ) ;
19
-
20
- Ok ( projects)
8
+ let project_db = app_state. project_db . lock ( ) . await ;
9
+ let project_db = project_db. as_ref ( ) . unwrap ( ) ;
10
+
11
+ let db = sled:: open ( & project_db. db_path ) . unwrap ( ) ;
12
+ let projects = db
13
+ . iter ( )
14
+ . map ( |r| {
15
+ let ( project, _) = r. unwrap ( ) ;
16
+ String :: from_utf8 ( project. to_vec ( ) ) . unwrap ( )
17
+ } )
18
+ . collect ( ) ;
19
+
20
+ Ok ( projects)
21
21
}
22
22
23
23
#[ tauri:: command]
24
24
pub async fn get_project_details (
25
- project : String ,
26
- app_state : State < ' _ , AppState > ,
25
+ project : String ,
26
+ app_state : State < ' _ , AppState > ,
27
27
) -> Result < ProjectDetails > {
28
- let project_db = app_state. project_db . lock ( ) . await ;
29
- let project_db = project_db. as_ref ( ) . unwrap ( ) ;
28
+ let project_db = app_state. project_db . lock ( ) . await ;
29
+ let project_db = project_db. as_ref ( ) . unwrap ( ) ;
30
30
31
- let project_details = project_db. get_connection_string ( project. as_str ( ) ) ?;
31
+ let project_details = project_db. get_connection_string ( project. as_str ( ) ) ?;
32
32
33
- Ok ( project_details)
33
+ Ok ( project_details)
34
+ }
35
+
36
+ #[ tauri:: command]
37
+ pub async fn remove_project ( project : String , app_state : State < ' _ , AppState > ) -> Result < ( ) > {
38
+ let project_db = app_state. project_db . lock ( ) . await ;
39
+ let project_db = project_db. as_ref ( ) . unwrap ( ) ;
40
+ project_db. remove_project ( project. as_str ( ) ) ?;
41
+ Ok ( ( ) )
34
42
}
35
43
36
44
#[ derive( Serialize , Deserialize , Debug , Clone , Default ) ]
37
45
pub struct ProjectDetails {
38
- pub user : String ,
39
- pub password : String ,
40
- pub host : String ,
41
- pub port : String ,
46
+ pub user : String ,
47
+ pub password : String ,
48
+ pub host : String ,
49
+ pub port : String ,
42
50
}
43
51
44
52
#[ derive( Serialize , Deserialize , Debug , Clone ) ]
45
53
pub struct ProjectDB {
46
- pub db_path : String ,
54
+ pub db_path : String ,
47
55
}
48
56
49
57
impl Default for ProjectDB {
50
- fn default ( ) -> Self {
51
- Self :: new ( )
52
- }
58
+ fn default ( ) -> Self {
59
+ Self :: new ( )
60
+ }
53
61
}
54
62
55
63
impl ProjectDB {
56
- pub fn new ( ) -> Self {
57
- Self {
58
- db_path : String :: from ( "project_db" ) ,
64
+ pub fn new ( ) -> Self {
65
+ Self {
66
+ db_path : String :: from ( "project_db" ) ,
67
+ }
68
+ }
69
+
70
+ pub fn get_connection_string ( & self , project : & str ) -> Result < ProjectDetails > {
71
+ let db = sled:: open ( & self . db_path ) . unwrap ( ) ;
72
+ let connection_string = db. get ( project) . unwrap ( ) ;
73
+ let mut project_details = ProjectDetails :: default ( ) ;
74
+
75
+ if let Some ( connection_string) = connection_string {
76
+ let connection_string = connection_string. to_vec ( ) ;
77
+ let connection_string = String :: from_utf8 ( connection_string) . unwrap ( ) ;
78
+ let connection_string = connection_string. split ( ' ' ) . collect :: < Vec < & str > > ( ) ;
79
+
80
+ for connection_string in connection_string {
81
+ let connection_string = connection_string. split ( '=' ) . collect :: < Vec < & str > > ( ) ;
82
+ let key = connection_string[ 0 ] ;
83
+ let value = connection_string[ 1 ] ;
84
+
85
+ match key {
86
+ "user" => project_details. user = value. to_string ( ) ,
87
+ "password" => project_details. password = value. to_string ( ) ,
88
+ "host" => project_details. host = value. to_string ( ) ,
89
+ "port" => project_details. port = value. to_string ( ) ,
90
+ _ => ( ) ,
59
91
}
92
+ }
60
93
}
61
94
62
- pub fn get_connection_string ( & self , project : & str ) -> Result < ProjectDetails > {
63
- let db = sled:: open ( & self . db_path ) . unwrap ( ) ;
64
- let connection_string = db. get ( project) . unwrap ( ) ;
65
- let mut project_details = ProjectDetails :: default ( ) ;
66
-
67
- if let Some ( connection_string) = connection_string {
68
- let connection_string = connection_string. to_vec ( ) ;
69
- let connection_string = String :: from_utf8 ( connection_string) . unwrap ( ) ;
70
- let connection_string = connection_string. split ( " " ) . collect :: < Vec < & str > > ( ) ;
71
-
72
- for connection_string in connection_string {
73
- let connection_string = connection_string. split ( "=" ) . collect :: < Vec < & str > > ( ) ;
74
- let key = connection_string[ 0 ] ;
75
- let value = connection_string[ 1 ] ;
76
-
77
- match key {
78
- "user" => project_details. user = value. to_string ( ) ,
79
- "password" => project_details. password = value. to_string ( ) ,
80
- "host" => project_details. host = value. to_string ( ) ,
81
- "port" => project_details. port = value. to_string ( ) ,
82
- _ => ( ) ,
83
- }
84
- }
85
- }
95
+ Ok ( project_details)
96
+ }
86
97
87
- Ok ( project_details )
88
- }
89
- }
98
+ pub fn remove_project ( & self , project : & str ) -> Result < ( ) > {
99
+ let db = sled :: open ( & self . db_path ) . unwrap ( ) ;
100
+ db . remove ( project ) . unwrap ( ) ;
90
101
102
+ Ok ( ( ) )
103
+ }
104
+ }
0 commit comments