MessageClickLinkLog.java

package com.deveagles.be15_deveagles_be.features.messages.command.domain.aggregate;

import jakarta.persistence.*;
import java.time.LocalDateTime;
import lombok.*;

@Entity
@Table(name = "message_click_link_log")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Builder
public class MessageClickLinkLog {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "click_id")
  private Long id;

  @Column(name = "message_link_id", nullable = false)
  private Long messageLinkId;

  @Column(name = "read_at", nullable = false)
  private LocalDateTime readAt;

  public static MessageClickLinkLog create(Long messageLinkId) {
    return MessageClickLinkLog.builder()
        .messageLinkId(messageLinkId)
        .readAt(LocalDateTime.now())
        .build();
  }

  public boolean isFrom(Long targetMessageLinkId) {
    return this.messageLinkId.equals(targetMessageLinkId);
  }
}