Documentation
¶
Index ¶
- Variables
- func Migrate(db *gorm.DB) error
- func Module() fx.Option
- type Config
- type Device
- type DeviceInfo
- type DeviceInput
- type DeviceModel
- type DeviceUpdate
- type Repository
- func (r *Repository) Cleanup(ctx context.Context, until time.Time) (int64, error)
- func (r *Repository) Exists(ctx context.Context, filters ...SelectFilter) (bool, error)
- func (r *Repository) Get(ctx context.Context, filter ...SelectFilter) (*Device, error)
- func (r *Repository) Insert(ctx context.Context, device DeviceInput) (*Device, error)
- func (r *Repository) Remove(ctx context.Context, filter ...SelectFilter) error
- func (r *Repository) Select(ctx context.Context, filter ...SelectFilter) ([]Device, error)
- func (r *Repository) SetLastSeen(ctx context.Context, id string, lastSeen time.Time) error
- func (r *Repository) Update(ctx context.Context, id string, device DeviceUpdate) error
- type SelectFilter
- type Service
- func (s *Service) Exists(ctx context.Context, userID string, filter ...SelectFilter) (bool, error)
- func (s *Service) Get(ctx context.Context, userID string, filter ...SelectFilter) (*Device, error)
- func (s *Service) GetAny(ctx context.Context, userID string, deviceID string, duration time.Duration) (*Device, error)
- func (s *Service) GetByToken(ctx context.Context, token string) (*Device, error)
- func (s *Service) Insert(ctx context.Context, userID string, device DeviceInfo) (*Device, error)
- func (s *Service) Remove(ctx context.Context, userID string, filter ...SelectFilter) error
- func (s *Service) Select(ctx context.Context, userID string, filter ...SelectFilter) ([]Device, error)
- func (s *Service) SetLastSeen(ctx context.Context, batch map[string]time.Time) error
- func (s *Service) Update(ctx context.Context, id string, device DeviceUpdate) error
- type SimCard
Constants ¶
This section is empty.
Variables ¶
var ( ErrNotFound = errors.New("record not found") ErrInvalidFilter = errors.New("invalid filter") ErrMoreThanOne = errors.New("more than one record") )
var (
ErrInvalidUser = errors.New("invalid user")
)
Functions ¶
Types ¶
type Device ¶ added in v1.44.0
type DeviceInfo ¶ added in v1.44.0
type DeviceInfo struct {
DeviceUpdate
Name *string
}
type DeviceInput ¶ added in v1.44.0
type DeviceInput struct {
DeviceInfo
ID string
UserID string
AuthToken string `json:"-"`
}
type DeviceModel ¶ added in v1.44.0
type DeviceModel struct {
models.SoftDeletableModel
ID string `gorm:"primaryKey;type:char(21)"`
Name *string `gorm:"type:varchar(128)"`
AuthToken string `gorm:"not null;uniqueIndex;type:char(21)"`
PushToken *string `gorm:"type:varchar(256)"`
LastSeen time.Time `gorm:"not null;autocreatetime:false;default:CURRENT_TIMESTAMP(3);index:idx_devices_last_seen"`
UserID string `gorm:"not null;type:varchar(32)"`
SimCards datatypes.JSONSlice[simCardModel] `gorm:"serializer:json;type:json"`
}
func (*DeviceModel) TableName ¶ added in v1.44.0
func (*DeviceModel) TableName() string
type DeviceUpdate ¶ added in v1.44.0
type Repository ¶ added in v1.34.0
type Repository struct {
// contains filtered or unexported fields
}
func NewRepository ¶ added in v1.34.0
func NewRepository(db *gorm.DB) *Repository
func (*Repository) Exists ¶ added in v1.34.0
func (r *Repository) Exists(ctx context.Context, filters ...SelectFilter) (bool, error)
Exists checks if there exists a device with the given filters.
If the device does not exist, it returns false and nil error. If there is an error during the query, it returns false and the error. Otherwise, it returns true and nil error.
func (*Repository) Get ¶ added in v1.34.0
func (r *Repository) Get(ctx context.Context, filter ...SelectFilter) (*Device, error)
func (*Repository) Insert ¶ added in v1.34.0
func (r *Repository) Insert(ctx context.Context, device DeviceInput) (*Device, error)
func (*Repository) Remove ¶ added in v1.34.0
func (r *Repository) Remove(ctx context.Context, filter ...SelectFilter) error
func (*Repository) Select ¶ added in v1.34.0
func (r *Repository) Select(ctx context.Context, filter ...SelectFilter) ([]Device, error)
func (*Repository) SetLastSeen ¶ added in v1.34.0
func (*Repository) Update ¶ added in v1.44.0
func (r *Repository) Update(ctx context.Context, id string, device DeviceUpdate) error
type SelectFilter ¶
type SelectFilter func(*selectFilter)
func ActiveWithin ¶ added in v1.25.0
func ActiveWithin(duration time.Duration) SelectFilter
func WithID ¶
func WithID(id string) SelectFilter
func WithToken ¶
func WithToken(token string) SelectFilter
func WithUserID ¶
func WithUserID(userID string) SelectFilter
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
func NewService ¶
func (*Service) Exists ¶ added in v1.22.0
Exists checks if there exists a device that matches the provided filters.
If the device does not exist, it returns false and nil error. If there is an error during the query, it returns false and the error. Otherwise, it returns true and nil error.
func (*Service) Get ¶
Get returns a single device based on the provided filters for a specific user. It ensures that the filter includes the user's ID. If no device matches the criteria, it returns ErrNotFound. If more than one device matches, it returns ErrMoreThanOne.
func (*Service) GetByToken ¶ added in v1.18.0
GetByToken returns a device by token.
This method is used to retrieve a device by its auth token. If the device does not exist, it returns ErrNotFound.
func (*Service) Remove ¶ added in v1.18.0
Remove removes devices for a specific user that match the provided filters. It ensures that the filter includes the user's ID.
func (*Service) Select ¶
func (s *Service) Select(ctx context.Context, userID string, filter ...SelectFilter) ([]Device, error)
Select returns a list of devices for a specific user that match the provided filters.