package com.pingcap.community.blogserver.entity;

import com.pingcap.community.blogserver.enums.PostAction;
import lombok.*;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import org.springframework.data.rest.core.annotation.RestResource;

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

@Entity(name = "post_event")
@Table(name = "post_events")
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EntityListeners(AuditingEntityListener.class)
public class PostEvent {

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

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "post_id", nullable = false)
  @RestResource(exported = false)
  @ToString.Exclude
  private Post post;

  @Enumerated(EnumType.STRING)
  @Column(name = "action", nullable = false)
  private PostAction action;

  @Lob
  @Column(name = "message", columnDefinition = "TEXT")
  private String message;

  @Column(name = "actor_id", nullable = false)
  @CreatedBy
  private Long actorId;

  @Column(name = "time", nullable = false)
  @CreatedDate
  private Date time;

}
