Socket
Socket
Sign inDemoInstall

typeorm-dynamic-filters

Package Overview
Dependencies
2
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    typeorm-dynamic-filters

Create a TypeORM query builder for listing entries with filters, pagination and ordination.


Version published
Weekly downloads
52
decreased by-22.39%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

Typeorm Dynamic Filters

Create a TypeORM query builder for listing entries with filters, pagination and ordination.


Installation

run:

npm install typeorm-dynamic-filters

or

yarn add typeorm-dynamic-filters

This package is compatible with TypeORM 0.3 !

For a TypeORM 0.2 compatible version you should use 0.0.2 version by running:

npm install typeorm-dynamic-filters@0.0.2

Usage

You will need to import and instantiate the main class

import { getRepository } from 'typeorm';
import { FilterBuilder } from 'typeorm-dynamic-filters';

const myOrmRepository = getRepository<User>(User);

const filterQueryBuilder = new FilterBuilder(myOrmRepository, 'alias');

Then build the queryBuilder for our filters:

const queryFilter = {
      filterBy: ['role'],
      filterType: ['not'],
      filterValue: ['admin'],
      page: 1,
      per_page: 12,
      orderBy: 'id',
      orderType: 'ASC',
    };

const queryBuilder = filterQueryBuilder.build(queryFilter);

The queryFilter object must be an IFilterQuery object which may be parsed from an ExpressJS request query.


import { parseQueryFilters } from 'typeorm-dynamic-filters';

.
.
.

const filter = parseQueryFilters(request.query)

Example:

?filterBy=name&filterValue=Maria&filterType=like&page=1&per_page=15&orderBy=id&orderType=ASC

will return the object:

{
  filterBy: ['name'],
  filterType: ['like'],
  filterValue: ['Maria'],
  page: 1,
  per_page: 15,
  orderBy: 'id',
  orderType: 'ASC',
}

You may use multiple filters in your query by splitting the fields by comma ','

?filterBy=name,role,active&filterValue=Maria,user,true&filterType=like,eq,eq

{
  filterBy: ['name','role','active'],
  filterType: ['like','eq','eq'],
  filterValue: ['Maria','user','true'],
  page: 1,
  per_page: 15,
  orderBy: 'id',
  orderType: 'ASC',
}

The valid filter types are:

  • eq - equal
  • not - not equal
  • in - included in a array ex: ?filterBy=name&filterType=in&filterValue=Maria|John|Marcelo
  • like - sql default like
  • ge - greater or equal
  • le - lesser or equal
  • btw - between two values ex: filterValue=30|40

If you need to filter by NULL values, just use the the 'eq' filterType and 'null' as filterValue.
The project includes a Joy Schema for validation libs such celebrate:
import {listWithFilterSchema} from 'typeorm-dynamic-filters';


Issues

If you find any bugs in the project please create an issue.

License

Copyright (c) 2022 Marcelo Kortkamp kortkamp.dev

The MIT License

Keywords

FAQs

Last updated on 12 Jun 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc