diff --git a/src/main/java/app/mealsmadeeasy/api/BackfillRecipeEmbeddings.java b/src/main/java/app/mealsmadeeasy/api/BackfillRecipeEmbeddings.java index 383586e..13265ad 100644 --- a/src/main/java/app/mealsmadeeasy/api/BackfillRecipeEmbeddings.java +++ b/src/main/java/app/mealsmadeeasy/api/BackfillRecipeEmbeddings.java @@ -3,8 +3,10 @@ package app.mealsmadeeasy.api; import app.mealsmadeeasy.api.job.JobService; import app.mealsmadeeasy.api.recipe.Recipe; import app.mealsmadeeasy.api.recipe.RecipeRepository; +import app.mealsmadeeasy.api.recipe.RecipeSummary; import app.mealsmadeeasy.api.recipe.job.RecipeSummaryJobHandler; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.Nullable; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -22,14 +24,16 @@ public class BackfillRecipeEmbeddings implements ApplicationRunner { @Override public void run(ApplicationArguments args) { - final List recipeEntities = this.recipeRepository.findAllBySummaryIsNull(); + final List recipeEntities = this.recipeRepository.findAll(); for (final Recipe recipe : recipeEntities) { - this.jobService.create( - RecipeSummaryJobHandler.JOB_KEY, - new RecipeSummaryJobHandler.RecipeSummaryJobPayload(recipe.getId()) - ); + final @Nullable RecipeSummary summary = recipe.getSummary(); + if (summary == null || summary.getSummary() == null || summary.getEmbedding() == null) { + this.jobService.create( + RecipeSummaryJobHandler.JOB_KEY, + new RecipeSummaryJobHandler.RecipeSummaryJobPayload(recipe.getId()) + ); + } } - this.recipeRepository.flush(); } } diff --git a/src/main/java/app/mealsmadeeasy/api/DevConfiguration.java b/src/main/java/app/mealsmadeeasy/api/DevConfiguration.java index 3b7fe3a..180b331 100644 --- a/src/main/java/app/mealsmadeeasy/api/DevConfiguration.java +++ b/src/main/java/app/mealsmadeeasy/api/DevConfiguration.java @@ -109,7 +109,7 @@ public class DevConfiguration { .isPublic(frontMatter.isPublic) .mainImage(mainImage) .build(); - final Recipe recipe = this.recipeService.create(testUser, recipeCreateSpec, false); + final Recipe recipe = this.recipeService.create(testUser, recipeCreateSpec, true); logger.info("Created recipe {}", recipe); } } diff --git a/src/main/java/app/mealsmadeeasy/api/recipe/RecipeRepository.java b/src/main/java/app/mealsmadeeasy/api/recipe/RecipeRepository.java index 0a5d817..e80b6f8 100644 --- a/src/main/java/app/mealsmadeeasy/api/recipe/RecipeRepository.java +++ b/src/main/java/app/mealsmadeeasy/api/recipe/RecipeRepository.java @@ -41,12 +41,10 @@ public interface RecipeRepository extends JpaRepository { @Query("SELECT r FROM Recipe r WHERE r.isPublic OR r.owner = ?1 OR ?1 MEMBER OF r.viewers") Slice findAllViewableBy(User viewer, Pageable pageable); - List findAllBySummaryIsNull(); - @Query( nativeQuery = true, value = """ - WITH distances AS (SELECT recipe_id, embedding <=> cast(?1 AS vector) AS distance FROM recipe_embedding) + WITH distances AS (SELECT recipe_id, embedding <=> cast(?1 AS vector) AS distance FROM recipe_summary) SELECT r.* FROM distances d INNER JOIN recipe r ON r.id = d.recipe_id WHERE d.distance < ?2 AND ( @@ -62,7 +60,7 @@ public interface RecipeRepository extends JpaRepository { @Query( nativeQuery = true, value = """ - WITH distances AS (SELECT recipe_id, embedding <=> cast(?1 AS vector) AS distance FROM recipe_embedding) + WITH distances AS (SELECT recipe_id, embedding <=> cast(?1 AS vector) AS distance FROM recipe_summary) SELECT r.* FROM distances d INNER JOIN recipe r ON r.id = d.recipe_id WHERE d.distance < ?2 AND r.is_public = TRUE diff --git a/src/main/java/app/mealsmadeeasy/api/recipe/job/RecipeSummaryJobHandler.java b/src/main/java/app/mealsmadeeasy/api/recipe/job/RecipeSummaryJobHandler.java index e5b7332..63892b1 100644 --- a/src/main/java/app/mealsmadeeasy/api/recipe/job/RecipeSummaryJobHandler.java +++ b/src/main/java/app/mealsmadeeasy/api/recipe/job/RecipeSummaryJobHandler.java @@ -61,11 +61,10 @@ public class RecipeSummaryJobHandler implements JobHandler