package com.pingcap.community.blogserver.entity;

import lombok.*;
import org.springframework.data.rest.core.annotation.RestResource;

import javax.persistence.*;
import java.util.Date;

@Entity(name = "visit")
@Table(name = "visits")
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class Visit {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "id", nullable = false)
  private Long id;

  @ManyToOne
  @JoinColumn(name = "post_id", nullable = false, updatable = false)
  private Post post;

  // Notice: When an anonymous user visits, this field is filled in null.
  @ManyToOne
  @JoinColumn(name = "user_id", updatable = false)
  private User user;

  @Column(name = "ip_address", updatable = false, length = 128)
  private String IPAddress;

  @Column(name = "session_id", updatable = false, length = 32)
  private String sessionID;

  // Session ID of the SSO.
  @Column(name = "ssid", updatable = false, length = 32)
  private String ssid;

  @ManyToOne
  @JoinColumn(name = "from_share_id", updatable = false)
  private Share share;

  @Column(
      name = "visited_at",
      updatable = false,
      columnDefinition = "datetime not null default CURRENT_TIMESTAMP")
  private Date visitedAt;
}
