Package detail

@lomray/typeorm-json-query

Lomray-Software40Apache-2.02.7.0

Service for convert JSON query to TypeORM query builder

js, service, helpers, json

readme

TypeORM JSON Query

Converting JSON query to TypeORM query builder.

npm GitHub GitHub package.json dependency version (dev dep on branch) semantic-release

Quality Gate Status Reliability Rating Security Rating Vulnerabilities Lines of Code Coverage

Install

npm i --save @lomray/typeorm-json-query

Usage

Pass request JSON query to TypeormJsonQuery.

Request: ```http request POST http://127.0.0.1:3000 Content-Type: application/json

{ "attributes": ["id", "param"], // or empty for select all "orderBy": { "id": "DESC", { "param": { "order": "ASC", "nulls": "last" } } }, "relations": ["demo"], "where": { "id": 1, "or": [{ "param": "hello" }, { "param": "world" }] }, }


__Server implementation:__
```typescript
import TypeormJsonQuery from '@lomray/typeorm-json-query';
import express from 'express';
import { getRepository } from 'typeorm';
import TestEntity from './entities/test-entity';

express()
  .get('/demo-endpoint', (req, res) => {
    const jsonQuery = req.body;
    const typeormQuery = TypeormJsonQuery.init({
      queryBuilder: getRepository(TestEntity).createQueryBuilder(),
      query: jsonQuery,
    });

    console.log(typeormQuery.toQuery().getSql());

    res.send('Ok.');
  });

Also, you can use IJsonQuery interface for support build JSON query on client side:

import { IJsonQuery } from '@lomray/typeorm-json-query';
import ITestEntity from './interfaces/i-test-entity';
import axios from 'axios';

const body: IJsonQuery<ITestEntity> = {
  relations: [{ name: 'test', where: { id: 1 } }],
  where: { and: [{ id: { '<': 5 } }, { param: { like: '%hello%' } }] },
};

axios.request({
  method: 'POST',
  body,
});

Check out tests/index-test.ts or src/index.ts for more info.