Frontend interface to nestjs-prisma-querybuilder
npm install nestjs-prisma-querybuilder-interfacesh
npm install --save nestjs-prisma-querybuilder-interface
`
#### yarn
`sh
yarn add nestjs-prisma-querybuilder-interface
`
- Properties
- Usage
| Name | Type | exemple |
| -------- | ---------- | ------------------------------------------------ |
| select | string | select: 'name email', |
| page | number | page: 2, |
| limit | number | limit: 20, |
| sort | SortFields | sort: {field: string, criteria: 'asc'}, |
| populate | Populate | populate: [{path: 'car', select: 'model plate'}] |
| filter | Filter | filter: [{name: 'jonas'}, {value: { gte: 4 }}] |
- Exported Interfaces
`tsx
import {
Query,
Populate,
Filter
} from 'nestjs-prisma-querybuilder-interface';
`
- Query
all types
- Populate
- Filter
- Operators
contains, endsWith, startsWith, equals, gt, gte, in, lt, lte ,not, notIn, hasEvery, hasSome, has, isEmpty;
- Full usage exemple
`tsx
QueryString({
select: 'firstName picture',
populate: [
{
path: 'car',
select: 'model plate',
populate: [
{
path: 'brand',
select: 'name'
}
]
}
],
filter: [
{
path: 'plate',
value: 'XFS1T67'
}
]
});
`
- Populate
`tsx
const populate: Populate = [
{
path: 'car',
select: 'model plate',
filter: [{ path: 'name', value: 'ford', operator: 'contains' }],
populate: [
{
path: 'brand',
select: 'name'
}
],
primaryKey: 'yourTablePrimaryKey' // default 'id'
}
];
`
- Filter
`tsx
const filter: Filter = [
{
path: 'createdAt',
value: new Date(),
operator: 'lte'
},
{
or: [
{
path: 'role',
value: 'admin',
operator: 'equals'
},
{
path: 'role',
value: 'system',
operator: 'equals'
}
]
},
{
and: [
{
path: 'name',
value: 'Ricky',
operator: 'equals',
insensitive: true
},
{
path: 'lastName',
value: 'Morty',
operator: 'contains',
insensitive: true
}
]
}
];
``