28a287cc5287ad5f6b02ec5a649743b163fecb5a
[src/xds/xds-agent.git] / lib / agent / project-st.go
1 package agent
2
3 import "github.com/iotbzh/xds-agent/lib/syncthing"
4
5 // SEB TODO
6
7 // IPROJECT interface implementation for syncthing projects
8
9 // STProject .
10 type STProject struct {
11         *Context
12         server *XdsServer
13         folder *FolderConfig
14 }
15
16 // NewProjectST Create a new instance of STProject
17 func NewProjectST(ctx *Context, svr *XdsServer) *STProject {
18         p := STProject{
19                 Context: ctx,
20                 server:  svr,
21                 folder:  &FolderConfig{},
22         }
23         return &p
24 }
25
26 // Add a new project
27 func (p *STProject) Add(cfg ProjectConfig) (*ProjectConfig, error) {
28         var err error
29
30         err = p.server.FolderAdd(p.server.ProjectToFolder(cfg), p.folder)
31         if err != nil {
32                 return nil, err
33         }
34         svrPrj := p.GetProject()
35
36         // Declare project into local Syncthing
37         p.SThg.FolderChange(st.FolderChangeArg{
38                 ID:           cfg.ID,
39                 Label:        cfg.Label,
40                 RelativePath: cfg.ClientPath,
41                 SyncThingID:  p.server.ServerConfig.Builder.SyncThingID,
42         })
43
44         return svrPrj, nil
45 }
46
47 // Delete a project
48 func (p *STProject) Delete() error {
49         return p.server.FolderDelete(p.folder.ID)
50 }
51
52 // GetProject Get public part of project config
53 func (p *STProject) GetProject() *ProjectConfig {
54         prj := p.server.FolderToProject(*p.folder)
55         prj.ServerID = p.server.ID
56         return &prj
57 }
58
59 // SetProject Set project config
60 func (p *STProject) SetProject(prj ProjectConfig) *ProjectConfig {
61         // SEB TODO
62         p.folder = p.server.ProjectToFolder(prj)
63         return p.GetProject()
64 }
65
66 // GetServer Get the XdsServer that holds this project
67 func (p *STProject) GetServer() *XdsServer {
68         // SEB TODO
69         return p.server
70 }
71
72 // GetFullPath returns the full path of a directory (from server POV)
73 func (p *STProject) GetFullPath(dir string) string {
74         /* SEB
75         if &dir == nil {
76                 return p.folder.DataSTProject.ServerPath
77         }
78         return filepath.Join(p.folder.DataSTProject.ServerPath, dir)
79         */
80         return "SEB TODO"
81 }
82
83 // Sync Force project files synchronization
84 func (p *STProject) Sync() error {
85         // SEB TODO
86         return nil
87 }
88
89 // IsInSync Check if project files are in-sync
90 func (p *STProject) IsInSync() (bool, error) {
91         // SEB TODO
92         return false, nil
93 }