Fridge.java

package ntnu.idatt2016.v233.SmartMat.entity.group;

import java.util.ArrayList;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso;
import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;

/**
 * Fridge is an entity class representing a fridge in the system.
 *
 * @author Anders & Birk
 * @version 1.2
 */

@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity(name = "fridge")
@Data
public class Fridge{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "fridge_id")
    long fridgeId;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "group_id")
    @JsonIgnore
    Group group;
    
    @OneToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH},
            fetch = FetchType.LAZY, mappedBy = "fridgeId")
    @OnDelete(action = OnDeleteAction.CASCADE)
    @JsonIgnoreProperties("fridgeId")
    List<FridgeProductAsso> products;


    /**
     * Adds a product to the fridge
     * @param product the product to add to the fridge
     */
    public void addProduct(FridgeProductAsso product){
        if(products == null){
            products = new ArrayList<>();
        }

        products.add(product);
    }
}