diff options
Diffstat (limited to 'model/job_status.go')
-rw-r--r-- | model/job_status.go | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/model/job_status.go b/model/job_status.go new file mode 100644 index 000000000..cf490648f --- /dev/null +++ b/model/job_status.go @@ -0,0 +1,59 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package model + +import ( + "encoding/json" + "io" +) + +const ( + JOB_TYPE_DATA_RETENTION = "data_retention" + JOB_TYPE_SEARCH_INDEXING = "search_indexing" +) + +type JobStatus struct { + Id string `json:"id"` + Type string `json:"type"` + StartAt int64 `json:"start_at"` + LastActivityAt int64 `json:"last_activity_at"` + LastRunStartedAt int64 `json:"last_run_started_at"` + LastRunCompletedAt int64 `json:"last_run_completed_at"` + Status string `json:"status"` + Data map[string]interface{} `json:"data"` +} + +func (js *JobStatus) ToJson() string { + if b, err := json.Marshal(js); err != nil { + return "" + } else { + return string(b) + } +} + +func JobStatusFromJson(data io.Reader) *JobStatus { + var status JobStatus + if err := json.NewDecoder(data).Decode(&status); err == nil { + return &status + } else { + return nil + } +} + +func JobStatusesToJson(statuses []*JobStatus) string { + if b, err := json.Marshal(statuses); err != nil { + return "" + } else { + return string(b) + } +} + +func JobStatusesFromJson(data io.Reader) []*JobStatus { + var statuses []*JobStatus + if err := json.NewDecoder(data).Decode(&statuses); err == nil { + return statuses + } else { + return nil + } +} |