package model

import (
	"time"

	"github.com/tech/sendico/pkg/mservice"
)

type ClientRefreshToken struct {
	SessionIdentifier `bson:",inline" json:",inline"`
	RefreshToken      string `bson:"token" json:"token"`
}

type RefreshToken struct {
	AccountBoundBase   `bson:",inline" json:",inline"`
	ClientRefreshToken `bson:",inline" json:",inline"`
	ExpiresAt          time.Time `bson:"expiresAt"`
	IsRevoked          bool      `bson:"isRevoked"`
	LastUsedAt         time.Time `bson:"lastUsedAt,omitempty"`
	UserAgent          string    `bson:"userAgent"`
	IPAddress          string    `bson:"ipAddress"`
}

func (*RefreshToken) Collection() string {
	return mservice.RefreshTokens
}
