# aqs-typeorm

> build typeorm queries using query string

Latest version **1.0.1** (published 2021-12-05) · MIT license · 0 weekly downloads

## Install

```sh
npm install aqs-typeorm
pnpm add aqs-typeorm
yarn add aqs-typeorm
bun add aqs-typeorm
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2021-12-05 |
| First published | 2021-12-05 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 21.9 KB |
| Known vulnerabilities | 0 (+4 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 0 |
| Author | AzizAhmad Noorzaie |
| Maintainers | aanoorzaie |
| Keywords | query string, querystring, url, query, qs, aqs, typeorm, postgres, sql |

## Links

- npm: https://www.npmjs.com/package/aqs-typeorm
- Repository: https://github.com/noorzaie/aqs-typeorm
- Homepage: https://github.com/noorzaie/aqs-typeorm#readme
- Issues: https://github.com/noorzaie/aqs-typeorm/issues
- npm.io page: https://npm.io/package/aqs-typeorm

## Dependencies (3)

- [pg](https://npm.io/package/pg.md) ^8.7.1
- [aqs](https://npm.io/package/aqs.md) ^1.0.6
- [typeorm](https://npm.io/package/typeorm.md) ^0.2.38

## Alternatives

- [@libsql/sqlite3](https://npm.io/package/@libsql/sqlite3.md) — 39.8K weekly downloads
- [@fortemi/core](https://npm.io/package/@fortemi/core.md) — 461 weekly downloads
- [cdb-converter](https://npm.io/package/cdb-converter.md) — 341 weekly downloads
- [@uplo/adapter-prisma](https://npm.io/package/@uplo/adapter-prisma.md) — 75 weekly downloads
- [typeorm-aios](https://npm.io/package/typeorm-aios.md) — 30 weekly downloads

## Recent versions

- 1.0.1 (latest) — 2021-12-05

## README

`aqs-typeorm` is a tool that builds [typeorm](https://typeorm.io) queries using [aqs](https://github.com/noorzaie/aqs) output.
`aqs` is a query parser library that can parse advanced operators and also query logic, so when you use it together wit aqs-typeorm, you can create typeorm queries from query string.

## Installation
```npm
npm install aqs-typeorm
```

## Usage
First you need to parse query string using `aqs`:
```javascript
import { parse } from 'aqs';
import { createConnection } from 'typeorm';
import { aqsToTypeorm } from 'aqs-typeorm';
import { User } from 'models/User';

const queryString = 'id{gt}4&name=joe';
const params = parse(queryString);
```

Then you can pass `params` to `aqs-typeorm` to build query using typeorm query builder:
```javascript
createConnection({
    type: "postgres",
    host: "localhost",
    username: "***",
    password: "***",
    database: "***",
    schema: "public",
    entities: [ "User.ts" ]
})
    .then(connection => {
        let builder = connection.getRepository(User).createQueryBuilder('user');
        aqsToTypeorm(params, builder);
        console.log(builder.getSql());
        // output: SELECT * "public"."user" "user" WHERE "user"."id" > 4 AND "user"."name" = "joe"
    });
```

There are some more examples that you can find in [exmaples](https://github.com/noorzaie/aqs-typeorm/tree/master/examples) folder.

## Configurations
You can configure name of different field that could be passed in query string:

| Option  | Description | Default value |
| ------------- | ------------- | ------------- |
| orderField  | Name of field to be used as order parameter  | order  |
| orderByField  | Name of field to be used as order_by field  | orderBy  |
| selectField  | Name of field to be used to select output fields  | select  |
| limitField  | Name of field to be used as limit field  | limit  |
| pageField  | Name of field to be used for pagination  | page  |
| perPage  | Number of results to be returned  |   |
| selectJoin  | Return joined relation in result or not  | true  |
| joinAliases  | Alias of join operators (see typeorm docs)  |   |
| selectAliases  | Alias of selected fields (see typeorm docs)  |   |

## Note
This package currently supports `postgres` and `mysql` dialects of typeorm.

---
_Source: https://npm.io/package/aqs-typeorm · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
