diff --git a/src/main/java/app/mealsmadeeasy/api/recipe/Recipe.java b/src/main/java/app/mealsmadeeasy/api/recipe/Recipe.java index 509d642..91732b7 100644 --- a/src/main/java/app/mealsmadeeasy/api/recipe/Recipe.java +++ b/src/main/java/app/mealsmadeeasy/api/recipe/Recipe.java @@ -52,11 +52,10 @@ public class Recipe { @JoinColumn(name = "owner_id", nullable = false) private User owner; - @OneToMany - @JoinColumn(name = "recipe_id") + @OneToMany(mappedBy = "recipe", orphanRemoval = true, cascade = CascadeType.ALL) private Set stars = new HashSet<>(); - @OneToMany(mappedBy = "recipe") + @OneToMany(mappedBy = "recipe", orphanRemoval = true, cascade = CascadeType.ALL) private Set comments = new HashSet<>(); @Column(nullable = false) diff --git a/src/main/java/app/mealsmadeeasy/api/recipe/star/RecipeStar.java b/src/main/java/app/mealsmadeeasy/api/recipe/star/RecipeStar.java index 28b7dea..01ee5d3 100644 --- a/src/main/java/app/mealsmadeeasy/api/recipe/star/RecipeStar.java +++ b/src/main/java/app/mealsmadeeasy/api/recipe/star/RecipeStar.java @@ -1,9 +1,8 @@ package app.mealsmadeeasy.api.recipe.star; -import jakarta.persistence.Column; -import jakarta.persistence.EmbeddedId; -import jakarta.persistence.Entity; -import jakarta.persistence.Table; +import app.mealsmadeeasy.api.recipe.Recipe; +import app.mealsmadeeasy.api.user.User; +import jakarta.persistence.*; import lombok.Data; import java.time.OffsetDateTime; @@ -16,6 +15,16 @@ public final class RecipeStar { @EmbeddedId private RecipeStarId id; + @ManyToOne + @MapsId("ownerId") + @JoinColumn(name = "owner_id", nullable = false, updatable = false) + private User owner; + + @ManyToOne + @MapsId("recipeId") + @JoinColumn(name = "recipe_id", nullable = false, updatable = false) + private Recipe recipe; + @Column(nullable = false, updatable = false) private OffsetDateTime timestamp = OffsetDateTime.now(); diff --git a/src/main/resources/db/migration/V11__redo_fk_constraints_with_cascades.sql b/src/main/resources/db/migration/V11__redo_fk_constraints_with_cascades.sql new file mode 100644 index 0000000..e824406 --- /dev/null +++ b/src/main/resources/db/migration/V11__redo_fk_constraints_with_cascades.sql @@ -0,0 +1,47 @@ +ALTER TABLE user_granted_authority DROP CONSTRAINT user_granted_authority_user_id_fkey; +ALTER TABLE user_granted_authority ADD FOREIGN KEY (user_id) REFERENCES "user" ON DELETE CASCADE; + +ALTER TABLE refresh_token DROP CONSTRAINT refresh_token_owner_id_fkey; +ALTER TABLE refresh_token ADD FOREIGN KEY (owner_id) REFERENCES "user" ON DELETE CASCADE; + +ALTER TABLE image DROP CONSTRAINT image_owner_id_fkey; +ALTER TABLE image ADD FOREIGN KEY (owner_id) REFERENCES "user" ON DELETE CASCADE; + +ALTER TABLE image_viewer DROP CONSTRAINT image_viewer_image_id_fkey; +ALTER TABLE image_viewer ADD FOREIGN KEY (image_id) REFERENCES image ON DELETE CASCADE; + +ALTER TABLE image_viewer DROP CONSTRAINT image_viewer_viewer_id_fkey; +ALTER TABLE image_viewer ADD FOREIGN KEY (viewer_id) REFERENCES "user" ON DELETE CASCADE; + +ALTER TABLE recipe DROP CONSTRAINT recipe_owner_id_fkey; +ALTER TABLE recipe ADD FOREIGN KEY (owner_id) REFERENCES "user" ON DELETE CASCADE; + +ALTER TABLE recipe DROP CONSTRAINT recipe_main_image_id_fkey; +ALTER TABLE recipe ADD FOREIGN KEY (main_image_id) REFERENCES image ON DELETE SET NULL; + +ALTER TABLE recipe_viewer DROP CONSTRAINT recipe_viewer_recipe_id_fkey; +ALTER TABLE recipe_viewer ADD FOREIGN KEY (recipe_id) REFERENCES recipe ON DELETE CASCADE; + +ALTER TABLE recipe_viewer DROP CONSTRAINT recipe_viewer_viewer_id_fkey; +ALTER TABLE recipe_viewer ADD FOREIGN KEY (viewer_id) REFERENCES "user" ON DELETE CASCADE; + +ALTER TABLE recipe_comment DROP CONSTRAINT recipe_comment_owner_id_fkey; +ALTER TABLE recipe_comment ADD FOREIGN KEY (owner_id) REFERENCES "user" ON DELETE CASCADE; + +ALTER TABLE recipe_comment DROP CONSTRAINT recipe_comment_recipe_id_fkey; +ALTER TABLE recipe_comment ADD FOREIGN KEY (recipe_id) REFERENCES recipe ON DELETE CASCADE; + +ALTER TABLE recipe_star DROP CONSTRAINT recipe_star_recipe_id_fkey; +ALTER TABLE recipe_star ADD FOREIGN KEY (recipe_id) REFERENCES recipe ON DELETE CASCADE; + +ALTER TABLE recipe_star DROP CONSTRAINT recipe_star_owner_id_fkey; +ALTER TABLE recipe_star ADD FOREIGN KEY (owner_id) REFERENCES "user" ON DELETE CASCADE; + +ALTER TABLE recipe_draft DROP CONSTRAINT recipe_draft_owner_id_fkey; +ALTER TABLE recipe_draft ADD FOREIGN KEY (owner_id) REFERENCES "user" ON DELETE CASCADE; + +ALTER TABLE recipe_draft DROP CONSTRAINT recipe_draft_main_image_id_fkey; +ALTER TABLE recipe_draft ADD FOREIGN KEY (main_image_id) REFERENCES image ON DELETE SET NULL; + +ALTER TABLE file DROP CONSTRAINT file_owner_id_fkey; +ALTER TABLE file ADD FOREIGN KEY (owner_id) REFERENCES "user" ON DELETE CASCADE; \ No newline at end of file