apollo-backend/internal/domain/account.go
2021-07-27 10:05:50 -04:00

39 lines
1.1 KiB
Go

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)
CreateOrUpdate(ctx context.Context, acc *Account) error
Update(ctx context.Context, acc *Account) error
Create(ctx context.Context, acc *Account) error
Delete(ctx context.Context, id int64) error
Associate(ctx context.Context, acc *Account, dev *Device) error
}
// 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)
CreateOrUpdate(ctx context.Context, acc *Account) error
Delete(ctx context.Context, id int64) error
}