package entity

import "time"

// BlacklistEntry represents a blacklisted JWT token
type BlacklistEntry struct {
	JTI       string `json:"jti"`        // JWT ID (unique identifier)
	UID       string `json:"uid"`        // User ID
	TokenID   string `json:"token_id"`   // Token ID from original token
	Reason    string `json:"reason"`     // Reason for blacklisting
	ExpiresAt int64  `json:"expires_at"` // When the original token expires
	CreatedAt int64  `json:"created_at"` // When it was blacklisted
}

// IsExpired checks if the blacklist entry is expired
func (b *BlacklistEntry) IsExpired() bool {
	return b.ExpiresAt <= time.Now().Unix()
}

// Validate validates the blacklist entry
func (b *BlacklistEntry) Validate() error {
	if b.JTI == "" {
		return ErrInvalidJTI
	}
	if b.UID == "" {
		return ErrInvalidUID
	}
	if b.TokenID == "" {
		return ErrInvalidTokenID
	}
	return nil
}
