DEV Community

Cover image for How to Enhance Prisma Queries with Filtering, Sorting, and Pagination
Unwrap Solutions
Unwrap Solutions

Posted on

How to Enhance Prisma Queries with Filtering, Sorting, and Pagination

πŸ“Œ Introduction

Prisma is one of the best ORMs for Node.js and TypeScript. But when building APIs, we often need to:
βœ… Filter records dynamically
βœ… Sort results based on query parameters
βœ… Implement pagination for large datasets
βœ… Select only specific fields

While Prisma provides built-in features, implementing these manually can become repetitive. That’s why I created Prisma Query Enhancerβ€”a simple package to handle this efficiently.

πŸš€ What is Prisma Query Enhancer?
Prisma Query Enhancer is an NPM package that makes Prisma queries cleaner and more reusable.

πŸ”§ Installation

sh
npm install prisma-query-enhancer

πŸ› οΈ How to Use It

Let's say we need to fetch users with filtering, sorting, pagination, and selected fields. Here’s how Prisma Query Enhancer simplifies it:

ts

import PrismaQueryEnhancer from 'prisma-query-enhancer';

const query = new PrismaQueryEnhancer(prisma.user, req.query)
  .filter()
  .sort()
  .limitFields()
  .paginate()
  .execute();

const users = await query;
Enter fullscreen mode Exit fullscreen mode

πŸ”₯ No more boilerplate!

πŸ“Œ How It Works

  • filter() β†’ Removes unwanted query fields & applies filtering
  • sort() β†’ Sorts based on request parameters
  • limitFields() β†’ Selects only the necessary fields
  • paginate() β†’ Implements pagination

πŸ“¦ Why Use Prisma Query Enhancer?

βœ” Saves time by reducing boilerplate code
βœ” Works seamlessly with Prisma ORM
βœ” Handles complex queries effortlessly

πŸš€ Try It Now!
πŸ“¦ Install via NPM:

`sh

npm install prisma-query-enhancer`

πŸ”— GitHub: https://github.com/unwrapsolutions/prisma-query-enhancer
πŸ”— NPM: https://www.npmjs.com/package/prisma-query-enhancer

πŸ’¬ Would love your feedback! Let me know what you think. πŸš€

Prisma #TypeScript #NodeJS #WebDev #JavaScript #NPM #OpenSource

Top comments (0)