aboutsummaryrefslogtreecommitdiffstats
path: root/bridge/core/export.go
diff options
context:
space:
mode:
Diffstat (limited to 'bridge/core/export.go')
-rw-r--r--bridge/core/export.go101
1 files changed, 101 insertions, 0 deletions
diff --git a/bridge/core/export.go b/bridge/core/export.go
new file mode 100644
index 00000000..080ced80
--- /dev/null
+++ b/bridge/core/export.go
@@ -0,0 +1,101 @@
+package core
+
+import "fmt"
+
+type ExportEvent int
+
+const (
+ _ ExportEvent = iota
+ ExportEventBug
+ ExportEventComment
+ ExportEventCommentEdition
+ ExportEventStatusChange
+ ExportEventTitleEdition
+ ExportEventLabelChange
+ ExportEventNothing
+)
+
+type ExportResult struct {
+ Err error
+ Event ExportEvent
+ ID string
+ Reason string
+}
+
+func (er ExportResult) String() string {
+ switch er.Event {
+ case ExportEventBug:
+ return "new issue"
+ case ExportEventComment:
+ return "new comment"
+ case ExportEventCommentEdition:
+ return "updated comment"
+ case ExportEventStatusChange:
+ return "changed status"
+ case ExportEventTitleEdition:
+ return "changed title"
+ case ExportEventLabelChange:
+ return "changed label"
+ case ExportEventNothing:
+ return fmt.Sprintf("no event: %v", er.Reason)
+ default:
+ panic("unknown export result")
+ }
+}
+
+func NewExportError(err error, reason string) ExportResult {
+ return ExportResult{
+ Err: err,
+ Reason: reason,
+ }
+}
+
+func NewExportNothing(id string, reason string) ExportResult {
+ return ExportResult{
+ ID: id,
+ Reason: reason,
+ Event: ExportEventNothing,
+ }
+}
+
+func NewExportBug(id string) ExportResult {
+ return ExportResult{
+ ID: id,
+ Event: ExportEventBug,
+ }
+}
+
+func NewExportComment(id string) ExportResult {
+ return ExportResult{
+ ID: id,
+ Event: ExportEventComment,
+ }
+}
+
+func NewExportCommentEdition(id string) ExportResult {
+ return ExportResult{
+ ID: id,
+ Event: ExportEventCommentEdition,
+ }
+}
+
+func NewExportStatusChange(id string) ExportResult {
+ return ExportResult{
+ ID: id,
+ Event: ExportEventStatusChange,
+ }
+}
+
+func NewExportLabelChange(id string) ExportResult {
+ return ExportResult{
+ ID: id,
+ Event: ExportEventLabelChange,
+ }
+}
+
+func NewExportTitleEdition(id string) ExportResult {
+ return ExportResult{
+ ID: id,
+ Event: ExportEventTitleEdition,
+ }
+}