aboutsummaryrefslogtreecommitdiffstats
path: root/lib/agent/project-interface.go
blob: 031e1d9278d38403528a59570f2503800059b7b9 (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
44
45
46
47
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"
)

type EventCBData map[string]interface{}
type EventCB func(cfg *ProjectConfig, data *EventCBData)

// 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
	SetProject(prj ProjectConfig) *ProjectConfig   // Set project configuration
	GetServer() *XdsServer                         // Get XdsServer that holds this project
	GetFullPath(dir string) string                 // Get project full path
	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"`
}