⚡ Bolt: Fix N+1 query bottleneck in CSV prompt imports#140
Conversation
- Pre-fetch existing prompt titles from CSV batch - Use Set for O(1) lookups during iteration - Add newly processed titles to Set to avoid inserting duplicates from CSV - Reduce DB queries from O(N) to O(1) batched query Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
- Map DATABASE_URL to DIRECT_URL during CI schema build steps when DIRECT_URL is missing - Remove static placeholder URL from datasource block to avoid hanging deployment steps Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
- Add DATABASE_URL to DIRECT_URL fallback for CI builds to prevent hanging deployments - Define empty datasource URL block correctly to satisfy SchemaEngineConfigClassic type requirements - Use non-null assertion to satisfy typescript without hardcoding a dummy database placeholder Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
💡 What
Replaced a sequential
findFirstdatabase query inside the CSV import loop with a single batchedfindManyquery before the loop starts. The results are mapped to aSetforO(1)lookups.🎯 Why
During CSV prompt imports, the previous implementation executed an individual
findFirstquery for every single row in the CSV file to check if a prompt with that title already existed. For a CSV with 1,000 rows, this meant 1,000 sequential database queries, creating a massive N+1 performance bottleneck.📊 Impact
O(N)(one per row) toO(1)(one batched query).O(N)DB lookups toO(1)in-memory Set lookups.🔬 Measurement
Run an import via the CSV import endpoint with a large file (e.g., hundreds of rows). Previously this would take several seconds to minutes; now it should process almost instantly as all existence checks are resolved in memory after a single database fetch.
PR created automatically by Jules for task 3853434278448843405 started by @billlzzz10
Summary by cubic
Removed the N+1 query in CSV prompt imports by batching a single
findManyand using aSetfor O(1) title checks. Also fixed Prisma CI env resolution by mappingDATABASE_URLtoDIRECT_URLand removing the placeholder datasource URL to prevent hanging schema builds.prisma.config.ts, fallbackDIRECT_URLtoDATABASE_URLand use a non-null assertion fordatasource.urlto avoid dummy URLs and stabilize CI schema builds.Written for commit 1139898. Summary will update on new commits.