package model

import (
	"time"

	"github.com/tech/sendico/pkg/db/storable"
	"github.com/tech/sendico/pkg/mservice"
	"go.mongodb.org/mongo-driver/v2/bson"
)

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

type RefreshToken struct {
	storable.Base      `bson:",inline" json:",inline"`
	ClientRefreshToken `bson:",inline" json:",inline"`
	AccountRef         *bson.ObjectID `bson:"accountRef,omitempty" json:"accountRef,omitempty"`
	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
}
