1
+ use crate :: { IpcContext , error:: Error } ;
2
+ use gitbutler_project:: { self as projects, ProjectId } ;
3
+ use std:: path:: PathBuf ;
4
+ use serde:: Deserialize ;
5
+
6
+ #[ derive( Deserialize ) ]
7
+ #[ serde( rename_all = "camelCase" ) ]
8
+ pub struct UpdateProjectParams {
9
+ pub project : projects:: UpdateRequest ,
10
+ }
11
+
12
+ pub fn update_project (
13
+ _ipc_ctx : & IpcContext ,
14
+ params : UpdateProjectParams ,
15
+ ) -> Result < projects:: Project , Error > {
16
+ Ok ( gitbutler_project:: update ( & params. project ) ?)
17
+ }
18
+
19
+ #[ derive( Deserialize ) ]
20
+ #[ serde( rename_all = "camelCase" ) ]
21
+ pub struct AddProjectParams {
22
+ pub path : PathBuf ,
23
+ }
24
+
25
+ pub fn add_project (
26
+ ipc_ctx : & IpcContext ,
27
+ params : AddProjectParams ,
28
+ ) -> Result < projects:: Project , Error > {
29
+ let user = ipc_ctx. user_controller . get_user ( ) ?;
30
+ let name = user. as_ref ( ) . and_then ( |u| u. name . clone ( ) ) ;
31
+ let email = user. as_ref ( ) . and_then ( |u| u. email . clone ( ) ) ;
32
+ Ok ( gitbutler_project:: add ( & params. path , name, email) ?)
33
+ }
34
+
35
+ #[ derive( Deserialize ) ]
36
+ #[ serde( rename_all = "camelCase" ) ]
37
+ pub struct GetProjectParams {
38
+ pub project_id : ProjectId ,
39
+ pub no_validation : Option < bool > ,
40
+ }
41
+
42
+ pub fn get_project (
43
+ _ipc_ctx : & IpcContext ,
44
+ params : GetProjectParams ,
45
+ ) -> Result < projects:: Project , Error > {
46
+ if params. no_validation . unwrap_or ( false ) {
47
+ Ok ( gitbutler_project:: get_raw ( params. project_id ) ?)
48
+ } else {
49
+ Ok ( gitbutler_project:: get_validated ( params. project_id ) ?)
50
+ }
51
+ }
52
+
53
+ #[ derive( Deserialize ) ]
54
+ #[ serde( rename_all = "camelCase" ) ]
55
+ pub struct DeleteProjectParams {
56
+ pub project_id : ProjectId ,
57
+ }
58
+
59
+ pub fn delete_project (
60
+ _ipc_ctx : & IpcContext ,
61
+ params : DeleteProjectParams ,
62
+ ) -> Result < ( ) , Error > {
63
+ gitbutler_project:: delete ( params. project_id ) . map_err ( Into :: into)
64
+ }
0 commit comments