diff options
author | Julio Capote <jcapote@gmail.com> | 2022-12-31 03:02:43 +0000 |
---|---|---|
committer | Julio Capote <jcapote@gmail.com> | 2022-12-31 03:02:43 +0000 |
commit | 9d870999909d533cc15fbeb8a5a41d7192473a49 (patch) | |
tree | 0d3809d8fb3e5217e913c5cc6752789cf1207e69 /models/outbox_item.go | |
parent | c500a2be38afcbb5688537d97c7c3ee30a57dba4 (diff) | |
download | communique-9d870999909d533cc15fbeb8a5a41d7192473a49.tar.gz |
switch to storing encoded structs
Diffstat (limited to 'models/outbox_item.go')
-rw-r--r-- | models/outbox_item.go | 36 |
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) } |