aboutsummaryrefslogtreecommitdiff
path: root/models/outbox_item.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/outbox_item.go')
-rw-r--r--models/outbox_item.go36
1 files changed, 22 insertions, 14 deletions
diff --git a/models/outbox_item.go b/models/outbox_item.go
index ed74130..9950d9c 100644
--- a/models/outbox_item.go
+++ b/models/outbox_item.go
@@ -1,6 +1,8 @@
package models
import (
+ "bytes"
+ "encoding/gob"
"fmt"
"time"
@@ -10,15 +12,15 @@ import (
)
type OutboxItem struct {
- handler config.Handler
- content []byte
- id []byte
- createdAt time.Time
+ Handler config.Handler
+ Content []byte
+ Id []byte
+ CreatedAt time.Time
}
// used for lookup purposes (count, collect)
func NewOutboxItem(h config.Handler) *OutboxItem {
- aso := &OutboxItem{handler: h}
+ aso := &OutboxItem{Handler: h}
return aso
}
@@ -26,31 +28,37 @@ func CreateOutboxItem(h config.Handler, content []byte) *OutboxItem {
t := time.Now()
k, _ := ksuid.NewRandomWithTime(t)
aso := &OutboxItem{
- handler: h,
- createdAt: t,
- content: content,
- id: k.Bytes(),
+ Handler: h,
+ CreatedAt: t,
+ Content: content,
+ Id: k.Bytes(),
}
return aso
}
func (a *OutboxItem) keyName() []byte {
- key := fmt.Sprintf("%s:%s", a.Keybase(), a.id)
+ key := fmt.Sprintf("%s:%s", a.Keybase(), a.Id)
return []byte(key)
}
func (a *OutboxItem) Keybase() string {
- keyBase := fmt.Sprintf("outboxes:%s", a.handler.Name)
+ keyBase := fmt.Sprintf("outboxes:%s", a.Handler.Name)
return keyBase
}
func (a *OutboxItem) Save(txn *badger.Txn) error {
- if len(a.content) == 0 {
+ if len(a.Content) == 0 {
return fmt.Errorf("content not set")
}
- if len(a.id) == 0 {
+ if len(a.Id) == 0 {
return fmt.Errorf("id not set")
}
- e := badger.NewEntry(a.keyName(), a.content)
+ var network bytes.Buffer
+ enc := gob.NewEncoder(&network)
+ err := enc.Encode(a)
+ if err != nil {
+ return fmt.Errorf("could not encode outbox item: %w", err)
+ }
+ e := badger.NewEntry(a.keyName(), network.Bytes())
return txn.SetEntry(e)
}