summaryrefslogtreecommitdiffstats
path: root/lib/agent/project-interface.go
blob: 0a4a17e8e39e43280ceeea50121cf9259f35771f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package agent

// ProjectType definition
type ProjectType string

const (
	TypePathMap   = "PathMap"
	TypeCloudSync = "CloudSync"
	TypeCifsSmb   = "CIFS"
)

// Project Status definition
const (
	StatusErrorConfig = "ErrorConfig"
	StatusDisable     = "Disable"
	StatusEnable      = "Enable"
	StatusPause       = "Pause"
	StatusSyncing     = "Syncing"
)

// IPROJECT Project interface
type IPROJECT interface {
	Add(cfg ProjectConfig) (*ProjectConfig, error)           // Add a new project
	Delete() error                                           // Delete a project
	GetProject() *ProjectConfig                              // Get project public configuration
	UpdateProject(prj ProjectConfig) (*ProjectConfig, error) // Update project configuration
	GetServer() *XdsServer                                   // Get XdsServer that holds this project
	Sync() error                                             // Force project files synchronization
	IsInSync() (bool, error)                                 // Check if project files are in-sync
}

// ProjectConfig is the config for one project
type ProjectConfig struct {
	ID         string      `json:"id"`
	ServerID   string      `json:"serverId"`
	Label      string      `json:"label"`
	ClientPath string      `json:"clientPath"`
	ServerPath string      `json:"serverPath"`
	Type       ProjectType `json:"type"`
	Status     string      `json:"status"`
	IsInSync   bool        `json:"isInSync"`
	DefaultSdk string      `json:"defaultSdk"`
}