Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions shared.go
Original file line number Diff line number Diff line change
Expand Up @@ -13686,6 +13686,28 @@ func BuildBaseSubscription(org Org, monthlyExecLimit int64) PaymentSubscription
}
}

func (s *SyncConfig) MergeSyncConfigBackup(peerWorkflowBackup, peerAppBackup bool, peerWorkflowBackupUpdated, peerAppBackupUpdated int64) bool {
changed := false

if peerWorkflowBackupUpdated > s.WorkflowBackupUpdated {
if s.WorkflowBackup != peerWorkflowBackup {
s.WorkflowBackup = peerWorkflowBackup
changed = true
}
s.WorkflowBackupUpdated = peerWorkflowBackupUpdated
}

if peerAppBackupUpdated > s.AppBackupUpdated {
if s.AppBackup != peerAppBackup {
s.AppBackup = peerAppBackup
changed = true
}
s.AppBackupUpdated = peerAppBackupUpdated
}

return changed
}

func HandleEditOrg(resp http.ResponseWriter, request *http.Request) {
cors := HandleCors(resp, request)
if cors {
Expand Down Expand Up @@ -13745,6 +13767,7 @@ func HandleEditOrg(resp http.ResponseWriter, request *http.Request) {
SubscriptionIndex string `json:"subscription_index" datastore:"subscription_index"`

SyncFeatures SyncFeatures `json:"sync_features" datastore:"sync_features"`
SyncConfig SyncConfig `json:"sync_config" datastore:"sync_config"`
Billing Billing `json:"billing" datastore:"billing"`
Branding OrgBranding `json:"branding" datastore:"branding"`
EditingBranding bool `json:"editing_branding" datastore:"editing_branding"`
Expand Down Expand Up @@ -13828,6 +13851,30 @@ func HandleEditOrg(resp http.ResponseWriter, request *http.Request) {
return
}

if tmpData.Editing == "sync_config" {
now := time.Now().Unix()
if tmpData.SyncConfig.WorkflowBackup != org.SyncConfig.WorkflowBackup {
org.SyncConfig.WorkflowBackup = tmpData.SyncConfig.WorkflowBackup
org.SyncConfig.WorkflowBackupUpdated = now
}
if tmpData.SyncConfig.AppBackup != org.SyncConfig.AppBackup {
org.SyncConfig.AppBackup = tmpData.SyncConfig.AppBackup
org.SyncConfig.AppBackupUpdated = now
}

err = SetOrg(ctx, *org, org.Id)
if err != nil {
log.Printf("[ERROR] Failed to update org %s sync config: %s", org.Id, err)
resp.WriteHeader(500)
resp.Write([]byte(`{"success": false}`))
return
}

resp.WriteHeader(200)
resp.Write([]byte(`{"success": true}`))
return
}

if tmpData.Editing == "subscription_update" && !user.SupportAccess {
resp.WriteHeader(403)
resp.Write([]byte(`{"success": false, "reason": "Support access required"}`))
Expand Down
14 changes: 14 additions & 0 deletions structs.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,11 @@ type RetStruct struct {
Licensed bool `json:"licensed"`
CloudSyncUrl string `json:"cloud_sync_url,omitempty"`
AppRunsHardLimit int64 `json:"app_runs_hard_limit"`
WorkflowBackup bool `json:"workflow_backup"`
AppBackup bool `json:"app_backup"`

WorkflowBackupUpdated int64 `json:"workflow_backup_updated"`
AppBackupUpdated int64 `json:"app_backup_updated"`
}

type AppMini struct {
Expand Down Expand Up @@ -1417,6 +1422,10 @@ type SyncConfig struct {

WorkflowBackup bool `json:"workflow_backup" datastore:"workflow_backup"`
AppBackup bool `json:"app_backup" datastore:"app_backup"`

WorkflowBackupUpdated int64 `json:"workflow_backup_updated" datastore:"workflow_backup_updated"`
AppBackupUpdated int64 `json:"app_backup_updated" datastore:"app_backup_updated"`
}
}

// RemoteWorkflowInfo holds metadata for a workflow found in a remote git repo.
Expand Down Expand Up @@ -4682,6 +4691,11 @@ type BackupJob struct {
Stats ExecutionInfo `json:"stats"`
Workflows []Workflow `json:"workflows"`
Apps []WorkflowApp `json:"apps"`

WorkflowBackup bool `json:"workflow_backup"`
AppBackup bool `json:"app_backup"`
WorkflowBackupUpdated int64 `json:"workflow_backup_updated"`
AppBackupUpdated int64 `json:"app_backup_updated"`
}

type WorkflowSearch struct {
Expand Down
Loading