Refactor API routes to separate concerns between HTTP handlers and business logic #360
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
📌 Purpose
Refactor API routes by extracting business logic into organized utility functions in the
/lib
directory.This improves code maintainability, eliminates duplication, and enhances testability by separating concerns between HTTP handling and business logic.
Closes #359
🖼️ Showcase
🔧 Changes
/lib
directory structure for better organization and consistencyescapeRegExp
function tosrc/lib/regex.ts
src/lib/paper-aggregation.ts
for extracting unique valuessrc/lib/services/google-sheets.ts
src/lib/slot-calculation.ts
src/lib/services/paper-transform.ts
mongoose.ts
→lib/database/mongoose.ts
pdf.ts
→lib/storage/pdf.ts
storage.ts
→lib/storage/gcp.ts
utils.ts
→ functions split across specialized files in/lib
/api/papers/route.ts
/api/related-subject/route.ts
/api/subscribe/route.ts
/api/upcoming-papers/route.ts
/api/user-papers/route.ts
utils
folder — functions now live directly in thelib
folder, grouped by domainCapsule
moved fromutils
to/components
folder🆕 Additional Notes
✅ Benefits