meals-made-easy-api/src/main/java/app/mealsmadeeasy/api/recipe/star/RecipeStar.java
2026-02-13 08:01:40 -06:00

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());
}
}