diff options
Diffstat (limited to 'models/subscription.go')
-rw-r--r-- | models/subscription.go | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/models/subscription.go b/models/subscription.go new file mode 100644 index 0000000..191ffc6 --- /dev/null +++ b/models/subscription.go @@ -0,0 +1,57 @@ +package models + +import ( + "fmt" + "time" + + "git.capotej.com/capotej/communique/config" + "github.com/dgraph-io/badger/v3" +) + +type Subscription struct { + Handler config.Handler + InboxUrl string + CreatedAt time.Time +} + +// used for lookup purposes (count, collect, find) +func NewSubscription(h config.Handler) *Subscription { + aso := &Subscription{Handler: h} + return aso +} + +func CreateSubscription(h config.Handler, inboxUrl string) (*Subscription, error) { + aso := &Subscription{ + Handler: h, + InboxUrl: inboxUrl, + CreatedAt: time.Now(), + } + return aso, nil +} + +func (a *Subscription) Name() string { + return "Subscription" +} + +func (a *Subscription) Keybase() string { + keyBase := fmt.Sprintf("sub:%s", a.Handler.Name) + return keyBase +} + +func (a *Subscription) DedupKey() string { + return a.Key() +} + +func (a *Subscription) Key() string { + return fmt.Sprintf("sub:%s:%s", a.Handler.Name, a.InboxUrl) +} + +func (a *Subscription) SaveDedup(txn *badger.Txn) error { + txn.Discard() // nothing to do here + return nil +} + +func (a *Subscription) Save(txn *badger.Txn) error { + e := badger.NewEntry([]byte(a.Key()), []byte{}) + return txn.SetEntry(e) +} |