65 lines
1.7 KiB
Java
65 lines
1.7 KiB
Java
package app.mealsmadeeasy.api.recipe.star;
|
|
|
|
import app.mealsmadeeasy.api.recipe.Recipe;
|
|
import app.mealsmadeeasy.api.user.User;
|
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
import jakarta.persistence.*;
|
|
import lombok.Getter;
|
|
import lombok.Setter;
|
|
import lombok.ToString;
|
|
|
|
import java.time.OffsetDateTime;
|
|
import java.util.Objects;
|
|
|
|
@Entity
|
|
@Table(name = "recipe_star")
|
|
@Getter
|
|
@Setter
|
|
@ToString
|
|
public final class RecipeStar {
|
|
|
|
@Id
|
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
@Basic(optional = false)
|
|
@Column(updatable = false)
|
|
@JsonIgnore
|
|
private Long id;
|
|
|
|
@ManyToOne
|
|
@JoinColumn(name = "owner_id", nullable = false, updatable = false)
|
|
@JsonIgnore
|
|
private User owner;
|
|
|
|
@ManyToOne
|
|
@JoinColumn(name = "recipe_id", nullable = false, updatable = false)
|
|
@JsonIgnore
|
|
private Recipe recipe;
|
|
|
|
@Basic(optional = false)
|
|
@Column(updatable = false)
|
|
private OffsetDateTime timestamp = OffsetDateTime.now();
|
|
|
|
@PrePersist
|
|
public void prePersist() {
|
|
this.timestamp = OffsetDateTime.now();
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object o) {
|
|
if (this == o) return true;
|
|
if (o instanceof RecipeStar other) {
|
|
return Objects.equals(this.recipe.getOwner().getUsername(), other.getOwner().getUsername())
|
|
&& Objects.equals(this.recipe.getSlug(), other.getRecipe().getSlug())
|
|
&& Objects.equals(this.owner.getUsername(), other.getOwner().getUsername());
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
return Objects.hash(this.recipe.getOwner().getUsername(), this.recipe.getSlug(), this.owner.getUsername());
|
|
}
|
|
|
|
}
|