apollo-backend/internal/domain/device.go

43 lines
1.3 KiB
Go
Raw Normal View History

2021-07-24 20:17:54 +00:00
package domain
2021-10-12 14:18:40 +00:00
import (
"context"
validation "github.com/go-ozzo/ozzo-validation/v4"
)
2021-07-24 20:17:54 +00:00
2021-09-11 14:53:19 +00:00
const (
2021-10-29 15:03:58 +00:00
DeviceGracePeriodDuration = 3600 // 1 hour
DeviceActiveAfterReceitCheckDuration = 3600 * 24 * 30 // ~1 month
2021-09-11 14:53:19 +00:00
)
2021-07-24 20:17:54 +00:00
type Device struct {
2021-09-11 14:53:19 +00:00
ID int64
APNSToken string
Sandbox bool
ActiveUntil int64
2021-07-24 20:17:54 +00:00
}
2021-10-12 14:18:40 +00:00
func (dev *Device) Validate() error {
return validation.ValidateStruct(dev,
validation.Field(&dev.APNSToken, validation.Required, validation.Length(64, 200)),
)
}
2021-07-24 20:17:54 +00:00
type DeviceRepository interface {
2021-09-25 16:56:01 +00:00
GetByID(ctx context.Context, id int64) (Device, error)
2021-07-24 20:17:54 +00:00
GetByAPNSToken(ctx context.Context, token string) (Device, error)
2022-03-12 17:50:05 +00:00
GetInboxNotifiableByAccountID(ctx context.Context, id int64) ([]Device, error)
GetWatcherNotifiableByAccountID(ctx context.Context, id int64) ([]Device, error)
2021-08-14 17:42:28 +00:00
GetByAccountID(ctx context.Context, id int64) ([]Device, error)
2021-07-26 16:34:26 +00:00
CreateOrUpdate(ctx context.Context, dev *Device) error
2021-07-24 20:17:54 +00:00
Update(ctx context.Context, dev *Device) error
Create(ctx context.Context, dev *Device) error
Delete(ctx context.Context, token string) error
2022-03-12 17:50:05 +00:00
SetNotifiable(ctx context.Context, dev *Device, acct *Account, inbox, watcher bool) error
GetNotifiable(ctx context.Context, dev *Device, acct *Account) (bool, bool, error)
2021-08-14 16:08:17 +00:00
PruneStale(ctx context.Context, before int64) (int64, error)
2021-07-24 20:17:54 +00:00
}