2021-07-24 19:44:26 +00:00
|
|
|
package domain
|
|
|
|
|
|
|
|
import "context"
|
|
|
|
|
|
|
|
// Account represents an account we need to periodically check in the notifications worker.
|
|
|
|
type Account struct {
|
|
|
|
ID int64
|
|
|
|
|
|
|
|
// Reddit information
|
|
|
|
Username string
|
|
|
|
AccountID string
|
|
|
|
AccessToken string
|
|
|
|
RefreshToken string
|
|
|
|
ExpiresAt int64
|
|
|
|
|
|
|
|
// Tracking how far behind we are
|
|
|
|
LastMessageID string
|
|
|
|
LastCheckedAt float64
|
|
|
|
}
|
|
|
|
|
|
|
|
// AccountRepository represents the account's repository contract
|
|
|
|
type AccountRepository interface {
|
|
|
|
GetByID(ctx context.Context, id int64) (Account, error)
|
|
|
|
GetByRedditID(ctx context.Context, id string) (Account, error)
|
|
|
|
|
2021-07-26 16:34:26 +00:00
|
|
|
CreateOrUpdate(ctx context.Context, acc *Account) error
|
2021-07-24 20:17:54 +00:00
|
|
|
Update(ctx context.Context, acc *Account) error
|
|
|
|
Create(ctx context.Context, acc *Account) error
|
2021-07-24 19:44:26 +00:00
|
|
|
Delete(ctx context.Context, id int64) error
|
2021-07-27 14:05:50 +00:00
|
|
|
Associate(ctx context.Context, acc *Account, dev *Device) error
|
2021-07-24 19:44:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// AccountUsecase represents the account's usecases
|
|
|
|
type AccountUsecase interface {
|
|
|
|
GetByID(ctx context.Context, id int64) (Account, error)
|
|
|
|
GetByRedditID(ctx context.Context, id string) (Account, error)
|
2021-07-24 20:17:54 +00:00
|
|
|
CreateOrUpdate(ctx context.Context, acc *Account) error
|
2021-07-24 19:44:26 +00:00
|
|
|
Delete(ctx context.Context, id int64) error
|
|
|
|
}
|