Querys
API Summary
1. CRUD API
| Query | Add | Update | Delete |
|---|---|---|---|
| all | |||
| query | updateByQuery | deleteByQuery | |
| queryPager | |||
| queryByCondition | updateByCondition | deleteByCondition | |
| queryByField | updateByField | deleteByField | |
| getById | add | update | deleteById |
| getByField |
说明 :
oor provide to constructor :
TableandViewDifference : View only include
API of Query,Table include all API。The API of last row :getById / getByField / add / update /deleteById
Only effect one effect, Others effect a list.
QuerySchemaandConditioncan use at query/update/deletequeryPagerwill return a struct of{ total:number, list: <Type Entity>[] }
2. External API
This two api can use of custom function:
exec(): Equivalent toquery(pg/mysql), orsearch(es)getClient(): Get the connection object, use to call some db apis.
QuerySchema
- QuerySchema is a Object
- QuerySchema construct of
Fixed PropertiesandCustom Properties Fixed Propertiesends with_.Custom Propertiesends withMagicSuffix(or not with it).
Demo
User.query({
start_: 0,
count_: 20,
order_: 'id',
by_: 'desc',
idMin: 200, // id > 200
idNot: 300, // id != 300
createDateMin : '2022-01-01', // createDate > 2022-01-01
createDateMax : new Date('2022-02-01'), // createDate < 2022-02-01
nameLike: 'title', // name like %title%
name: 'oor' // product = oor (No Suffix, No Magic )
})
Fix Properties
| Property | Type | Description | Default |
|---|---|---|---|
| start_ | number | Start Offset | 0 |
| count_ | number | Limit Count | 10 |
| order_ | string | Sort order field | id |
| by_ | 'asc' | 'desc' | Sory by method | desc |
| keyword_ | string | Search KeyWord |
Magic Suffix
QuerySchema can have any mount of Custom Properties.
Custom Properties = field name + Magic Suffix , no Magic Suffix eq to =.
'Min', 'MinThan', 'Max', 'MaxThan', // commom > , >= , < , <=
'MinH', 'MinD', 'MinM', 'MaxH', 'MaxD', 'MaxM', // Only Date Hour / Day / Month
'Like', 'Likel', 'Liker', // Only String like leftlike rightlike
'Bt', 'BtD', 'BtY', 'BtM', // BETWEEN, support Number/Date ,'BtY', 'BtM', 'BtD' Only Spport Date
'Not', // != or <>
'IsNull', 'NotNull', // isNull or Not NULL This Suffix will avoid value
'>', '>=', '<', '<=', '=', '!=', '<>' // Comparison Functions,
'In', 'NotIn' // SQL IN Condition , use "," sperate items, Not support boolean date
Details List:
| Suffix | Description | Support PG/MySql | Support ES |
|---|---|---|---|
| = | eq | All (default) | All (default) |
| Min , > | MoreThan | All | Number, Date |
| MinThan , >= | MoreThan or eq | String, Number, Date | Number, Date |
| Max , < | LessThan | All | Number, Date |
| MaxThan , <= | LessThan or eq | String, Number, Date | Number, Date |
| MinH | MoreThan or eq (Hour) | Date | Date |
| MinD | MoreThan or eq (Day) | Date | Date |
| MinM | MoreThan or eq (Month) | Date | Date |
| MaxH | LessThan or eq (Hour) | Date | Date |
| MaxD | LessThan or eq (Day) | Date | Date |
| MaxM | LessThan or eq (Month) | Date | Date |
| Like | Like | String | String |
| Likel | Starts With | String | String |
| Liker | Ends With | String | String |
| Bt | Between | Number, Date | Number, Date |
| BtD | Between (Day) | Date | Date |
| BtM | Between (Month) | Date | Date |
| BtY | Between (Year) | Date | Date |
| Not ,<>,!= | Not eq | String, Number, Boolean | String, Number, Boolean |
| IsNull | is Null | All | All |
| NotNull | is Not Null | All | All |
| In | in | String,Number | String,Number |
| NotIn | Not in | String,Number | String,Number |
Bt , In , NotIn
The Bt Syntax like Notations for intervals :

Some Examples of Bt :
| Demo | Description |
|---|---|
| { fieldBt: '1' } | field >= 1 |
| { fieldBt: '[1' } | field > 1 |
| { fieldBt: '(1' } | field > 1 |
| { fieldBt: ',100' } | field <= 100 |
| { fieldBt: ',100]' } | field <= 100 |
| { fieldBt: ',100)' } | field < 100 |
| { fieldBt: '1,100' } | field >= 1 AND field <= 100 |
| { fieldBt: '[1,100)' } | field >= 1 AND field < 100 |
| { fieldBt: '(1,100)' } | field > 1 AND field < 100 |
| { fieldBt: '20201011,2022-10-11 11:11:11' } | field > {time-20201011} AND field < { time-2022-10-11 11:11:11} |
In NotIn 语法 : In, NotIn 都是以逗号进行分割的字符串。
Condition
Notice :
Conditionis not suggest. Because condition will not validate.But if need Build some complex query, you can use it .
Conditionis a struct combined with any number ofItemorCondition, and multi Levels.Itemis a struct ofcolumn(the database column name, not field name), andvalue, fn, fn is MagicSuffix.- Condition has a
linkdescrie the relation of child items, supportANDandOR
A demo of condition
const condition: WhereParam = {
link: 'AND',
items: [
{ column: 'a1', value: 'value1' },
{ column: 'a2', fn: '<', value: 'value2' },
{
link: 'OR', items: [
{ column: 'b1', fn: 'Like', value: 'value3' },
{
link: 'NOT', items: [
{ column: 'd1', value: 'test1' },
{ column: 'd2', value: 'test2' },
{
link: 'AND', items: [
{ column: 'e1', value: 'test6' },
{ column: 'e2', value: 'test7' },
]
}
]
},
{ column: 'b2', fn: '>=', value: 'value4' },
]
},
{ column: 'a3', fn: '<', value: 'value1' },
]
}
await entity.queryByCondition(condition)