apollo-backend/internal/domain/watcher.go

41 lines
971 B
Go
Raw Normal View History

2021-09-25 16:56:01 +00:00
package domain
import "context"
2021-10-09 14:59:20 +00:00
type WatcherType int64
const (
SubredditWatcher WatcherType = iota
UserWatcher
)
2021-09-25 16:56:01 +00:00
type Watcher struct {
ID int64
CreatedAt float64
LastNotifiedAt float64
2021-09-25 16:56:01 +00:00
2021-10-09 14:59:20 +00:00
DeviceID int64
AccountID int64
Type WatcherType
WatcheeID int64
2021-09-25 16:56:01 +00:00
Upvotes int64
Keyword string
Flair string
Domain string
2021-09-25 18:27:58 +00:00
Hits int64
2021-09-25 16:56:01 +00:00
}
type WatcherRepository interface {
GetByID(ctx context.Context, id int64) (Watcher, error)
GetBySubredditID(ctx context.Context, id int64) ([]Watcher, error)
2021-10-09 14:59:20 +00:00
GetByUserID(ctx context.Context, id int64) ([]Watcher, error)
2021-09-25 18:17:23 +00:00
GetByDeviceAPNSTokenAndAccountRedditID(ctx context.Context, apns string, rid string) ([]Watcher, error)
2021-09-25 16:56:01 +00:00
Create(ctx context.Context, watcher *Watcher) error
Update(ctx context.Context, watcher *Watcher) error
2021-09-25 18:27:58 +00:00
IncrementHits(ctx context.Context, id int64) error
2021-09-25 16:56:01 +00:00
Delete(ctx context.Context, id int64) error
DeleteByTypeAndWatcheeID(context.Context, WatcherType, int64) error
2021-09-25 16:56:01 +00:00
}