cardamom
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Viewing readonly version of main branch: v285View latest version
- Status: Optimized with bulk INSERT pattern and transactions
- Solution: Replaced N individual INSERT queries with single bulk INSERT
- Performance: ~80% reduction in database operations for ingredient updates
- Test: Available at
GET /api/test-ingredients
- Status: Implemented using Val Town's
sqlite.batch()
method - Solution: All multi-table operations now atomic with automatic rollback
- Coverage: Recipe creation, updates, shopping list creation
- Test: Available at
GET /api/test-transaction
- Location: All list queries (recipes, shopping lists)
- Issue: No pagination or limits on query results
- Impact: Memory exhaustion with large datasets, slow response times
- Fix: Implement pagination with default limits (e.g., 50 items per page)
- Location:
backend/database/queries.ts:257-263
- Issue: Using string concatenation for IN clause instead of parameterized queries
- Impact: Potential performance issues with query plan caching
- Fix: Use proper parameterized queries or batch operations
- Issue: Each query creates new connection to SQLite
- Impact: Overhead on each query, especially problematic with N+1 queries
- Fix: Implement connection reuse pattern for Val Town SQLite
- Location:
backend/database/queries.ts:282-320
- Issue: Heavy string processing on every shopping list creation
- Impact: Slow shopping list generation with many recipes
- Fix: Pre-compute normalized names or use database-level normalization