3.2.9 • Published 3 months ago
tessio v3.2.9
Tesseract
Run unit tests:
npm test
Query
interface Message {
kind: 'message'
id: number
message: string
status: string
user: number
}
interface User {
kind: 'user'
id: number
name: string
}
/**
* Three generic parameters:
*
* 1. Type of a main table
* 2. Union of all types that columns will resolve
* 3. The discriminant property of the union
*/
let query: Query<Message, User, 'kind'> = {
id: 'messages_query',
table: 'message',
columns: [{
name: 'id',
primaryKey: true
},{
name: 'message',
},{
name: 'status',
},{
name: 'userName',
resolve: {
underlyingField: 'user',
childrenTable: 'user',
displayField: 'name'
}
}],
filter: [{
type: 'custom',
value: 'status == 2',
}],
sort: [{ field: 'id', direction: 'desc' }]
}
let complexQuery: Query<Message, User, 'kind'> = {
id: 'aggregated_subquery',
table: 'users',
subSessions: {
msgPerUser: {
table: 'message',
columns: [{
name: 'user',
primaryKey: true,
}, {
name: 'count',
value: 1,
aggregator: 'sum'
}],
groupBy: [{ dataIndex: 'user' }]
}
},
columns: [{
name: 'id',
primaryKey: true,
}, {
name: 'name',
}, {
name: 'msgCount',
resolve: {
underlyingField: 'id',
session: 'msgPerUser',
displayField: 'count'
}
},{
name: 'halfCount',
value: x => x.msgCount/2
}, {
name: 'templatedName',
value: '${name} - ${msgCount}'
}],
filter: [{
type: 'custom',
value: 'msgCount > 1',
}],
sort: [ { field: 'name', direction: 'asc' }]
}
3.2.9
3 months ago
3.2.8
1 year ago
3.2.7
1 year ago
3.2.6
2 years ago
3.2.5
2 years ago
3.2.2
2 years ago
3.2.1
2 years ago
3.2.0
2 years ago
3.2.4
2 years ago
3.2.3
2 years ago
3.1.12
2 years ago
3.1.7
2 years ago
3.1.6
2 years ago
3.1.5
2 years ago
3.1.10
2 years ago
3.1.8
2 years ago
3.1.4
3 years ago
3.1.3
3 years ago
3.1.2
3 years ago
3.1.1
3 years ago
3.1.0
4 years ago
2.2.3
5 years ago