75 lines
1.9 KiB
Java
75 lines
1.9 KiB
Java
package app.mealsmadeeasy.api.recipe;
|
|
|
|
import app.mealsmadeeasy.api.image.Image;
|
|
import app.mealsmadeeasy.api.user.User;
|
|
import io.hypersistence.utils.hibernate.type.json.JsonBinaryType;
|
|
import jakarta.persistence.*;
|
|
import lombok.Data;
|
|
import org.hibernate.annotations.Type;
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
import java.time.OffsetDateTime;
|
|
import java.util.List;
|
|
import java.util.UUID;
|
|
|
|
@Entity
|
|
@Table(name = "recipe_draft")
|
|
@Data
|
|
public class RecipeDraft {
|
|
|
|
public enum State {
|
|
INFER,
|
|
ENTER_DATA
|
|
}
|
|
|
|
@Data
|
|
public static class RecipeDraftInference {
|
|
private OffsetDateTime inferredAt;
|
|
private String title;
|
|
private String rawText;
|
|
}
|
|
|
|
@Data
|
|
public static class IngredientDraft {
|
|
private @Nullable String amount;
|
|
private String name;
|
|
private @Nullable String notes;
|
|
}
|
|
|
|
@Id
|
|
@GeneratedValue(strategy = GenerationType.UUID)
|
|
@Column(nullable = false, unique = true, updatable = false)
|
|
private UUID id;
|
|
|
|
@Column(nullable = false)
|
|
private OffsetDateTime created;
|
|
private @Nullable OffsetDateTime modified;
|
|
|
|
@Column(nullable = false)
|
|
private State state;
|
|
|
|
private @Nullable String slug;
|
|
private @Nullable String title;
|
|
private @Nullable Integer preparationTime;
|
|
private @Nullable Integer cookingTime;
|
|
private @Nullable Integer totalTime;
|
|
private @Nullable String rawText;
|
|
|
|
@Type(JsonBinaryType.class)
|
|
@Column(columnDefinition = "jsonb")
|
|
private @Nullable List<IngredientDraft> ingredients;
|
|
|
|
@ManyToOne(optional = false)
|
|
@JoinColumn(name = "owner_id", nullable = false)
|
|
private User owner;
|
|
|
|
@ManyToOne
|
|
@JoinColumn(name = "main_image_id")
|
|
private @Nullable Image mainImage;
|
|
|
|
@Type(JsonBinaryType.class)
|
|
@Column(columnDefinition = "jsonb")
|
|
private @Nullable List<RecipeDraftInference> inferences;
|
|
|
|
}
|