MongoRefreshToken.java

package com.wilzwert.myjobs.infrastructure.persistence.mongo.entity;

import com.wilzwert.myjobs.infrastructure.security.model.RefreshToken;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

import java.time.Instant;
import java.util.UUID;

/**
 * @author Wilhelm Zwertvaegher
 */

@Data
@Accessors(chain = true)
@Document(collection = "refresh_token")
public class MongoRefreshToken implements RefreshToken {

    @Id
    private UUID id;

    @Field(name = "user_id")
    private UUID userId;

    @Indexed(unique = true)
    private String token;

    @Field(name = "expires_at")
    private Instant expiresAt;

    @Override
    public String getToken() {
        return token;
    }

    @Override
    public void setExpiresAt(Instant expiresAt) {
        this.expiresAt = expiresAt;
    }
}