package hdm.mi.growbros.models;

import hdm.mi.growbros.models.plant.Plant;
import hdm.mi.growbros.models.user.User;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import java.util.Date;
import java.util.Objects;

@Entity
@EntityListeners(AuditingEntityListener.class)
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class GardenEntry {
    @Id
    @GeneratedValue
    private Long id;

    @ManyToOne(optional = false)
    private Plant plant;

    @ManyToOne(optional = false)
    private User user;

    @CreatedDate
    private Date createdAt;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        GardenEntry that = (GardenEntry) o;
        return Objects.equals(id, that.id) && Objects.equals(plant, that.plant);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, plant);
    }
}