3.2.1 • Published 1 year ago

@luxury-presence/nestjs-jsonapi v3.2.1

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

Description

JSON API parser for Nest based on the json api.

Installation

$ npm i --save @luxury-presence/nestjs-jsonapi

Usage

import {
  ParseJsonApiQuery,
  ParsingConfig,
  Op,
  ParsedQuery,
} from '@luxury-presence/nestjs-jsonapi';

export class MyEntity {
  firstName: string;
  lastName: string;
  email: string;
  age: number;
  hasShoes: boolean;
}
const testConfig: ParsingConfig<MyEntity> = {
  sortableColumns: ['firstName', 'age'],
  searchableColumns: ['email', 'firstName', 'lastName'],
  filterableColumns: {
    firstName: [Op.$eq, Op.$in],
    lastName: [Op.$eq, Op.$in, Op.$like],
    email: [Op.$eq],
    age: [Op.$gt, Op.$gte, Op.$lt, Op.$lte, Op.$btw],
    hasShoes: [Op.$true, Op.$false],
  },
};

@Controller('my-controller')
export class MyController {

  @Get()
  async find(
    @ParseJsonApiQuery<MyEntity>({ config: testConfig }) params: ParsedQuery<MyEntity>
  ) {
    // return parsed query
    /*
     params = {
        page: { limit: 15, on: 2 },
        sort: [ [ 'firstName', 'ASC' ], [ 'age', 'DESC' ] ],
        search: { by: 'lastName', term: 'username' },
        filter: {
          firstName: { ['$in']: [Array] },
          lastName: { ['$eq']: 'lastName' },
          email: { ['$not']: [Object] },
          address: { ['$like']: '123Avenue' },
          age: { ['$gt']: '1000000' },
          hasShoes: { ['$eq']: true },
        },
        path: 'https://localhost/api/v1/my-controller',
      }
     * 
    */
 
  }
}

Call the API

$   curl -X 'GET' 'http://localhost:8011/api/v1/agents?page.on=2&page.limit=15&sort=firstName,-age&filter.firstName=$in:user1,user2&filter.lastName=$eq:lastName&filter.hasShoes=$true

Publishing a new version

Run npm run release

This will kick off the release process which will build the project, create a tag, bump version, and create a release.

This is an interactive process so it will require input from the user to confirm each step.

Under the hood we use release-it. Learn more about how it works here.

License

MIT

3.2.1

1 year ago

3.2.0

1 year ago

3.1.0

1 year ago

3.1.0-0

1 year ago

3.1.0-2

1 year ago

3.1.0-1

1 year ago

3.0.1-0

1 year ago

3.1.0-alpha.2

1 year ago

3.0.0

1 year ago

3.0.0-alpha.1

1 year ago

2.4.0

1 year ago

2.3.0-alpha.1

1 year ago

2.3.0

1 year ago

2.2.2-alpha.1

2 years ago

2.2.1-alpha.2

2 years ago

2.2.1-alpha.3

2 years ago

2.2.1-alpha.1

2 years ago

1.7.1-alpha.2

2 years ago

1.7.1

2 years ago

1.7.1-alpha.0

2 years ago

1.7.1-alpha.1

2 years ago

2.2.1

2 years ago

2.2.0

2 years ago

2.0.0-alpha.1

2 years ago

2.2.0-alpha.2

2 years ago

2.1.0

2 years ago

2.2.0-alpha.1

2 years ago

2.0.0

2 years ago

1.7.0

2 years ago

1.7.0-alpha.1

2 years ago

1.7.0-alpha.2

2 years ago

1.4.0-alpha.0

2 years ago

1.2.0

2 years ago

1.4.0-alpha.1

2 years ago

1.4.0-alpha.2

2 years ago

1.4.0-alpha.3

2 years ago

1.5.2

2 years ago

1.4.3

2 years ago

1.6.0

2 years ago

1.6.0-alpha.1

2 years ago

1.5.1

2 years ago

1.4.2

2 years ago

1.6.0-alpha.0

2 years ago

1.5.0

2 years ago

1.4.1

2 years ago

1.4.0

2 years ago

1.3.0

2 years ago

1.4.0-alpha.4

2 years ago

1.4.0-alpha.5

2 years ago

1.4.0-alpha.6

2 years ago

1.5.0-0

2 years ago

1.3.0-alpha.0

2 years ago

1.3.0-alpha.1

2 years ago

1.1.0

2 years ago

1.0.0

2 years ago

0.0.99

2 years ago

0.1.0

2 years ago

0.0.1

2 years ago