Strapi flexible and typesafe query builder

Hi all. I’ve been working with Strapi for over a year now, and it’s just a great solution. =)

During that time I had to write a lot of queries, sometimes very complex, both in terms of size and in terms of construction. And I needed a tool for type-safe and flexible construction of queries, something like (Entity Framework). Since I couldn’t find it, I started to write a small utility. I’ve been using it for more than half year and it repeatedly saved me when field names were changed or new fields were added. And in general I was able to organize the code closer to DDD.

So now I can write queries with autocompletion, something like this.

import SQLBuilder from "strapi-query-builder";

const query = new SQBuilder<PostType>()
      .filters("title", (b) => b.eq("Hello World"))
      .filters("createdAt", (b) => b.gte("2021-11-17T14:28:25.843Z"))
      .sort("title").asc()
      .fields(["title", "description"])
      .populate<CategoryType>("category", (categoryBuilder) =>
        categoryBuilder
          .or()
          .filters("slug")
          .contains("phone")
          .filters("name")
          .contains("phone")
      )
      .build();

Finally, got everything ready and put it out as a package. I hope someone might find it useful.

strapi-query-builder - npm (npmjs.com)

I’m not good at publishing packages yet, since this is my first time. But I tried to make a good description.

1 Like

This is awesome! Thanks for sharing :+1:

1 Like