@chego/chego-tools
v2.1.5
Published
A set of tools used across Chego modules.
Downloads
37
Maintainers
Readme
chego-tools
This package contains a bunch of functions used across Chego components.
Install
npm install --save @chego/chego-tools
Short introduction
The functions included in this package have been separated from the core component, so that they can be used in database drivers without any unnecessary and heavy dependencies. As such, they should not be part of the official API.
To find out what Property
, Table
, SortingData
, Alias
, RowId
, Limit
, LogicalOperatorScope
, FunctionData
are, please check Chego API
Tools
newProperty({ table?: Table, name?: string, alias?: string, type?: QuerySyntaxEnum }): Property
Returns new Property
object.
newTable(name: string, alias?: string): Table
Returns new Table
object.
newLimit(offsetOrCount: number, count?: number): Limit
Returns new Limit
object.
newSortingData(property: Property = null, order: SortingOrderEnum = SortingOrderEnum.ASC): SortingData
Returns new SortingData
object.
rowId(alias: string = 'id'): Property
Returns new Property
object with the defined type QuerySyntaxEnum.RowId
.
alias(name: string, alias: string): Property
Returns new Property
object with the defined type QuerySyntaxEnum.Alias
.
getLabel(obj: Property | Table):string
Returns label string of given property/table. If alias
is set then it will return its value, otherwise it returns name
of the property.
parseStringToPropertyIfRequired(key: StringOrProperty):Property
Function checks if a given key
is a string
, if so, it parses it to a Property
object.
mergePropertiesWithLogicalAnd(properties: PropertyOrLogicalOperatorScope[], current: PropertyOrLogicalOperatorScope, i: number): PropertyOrLogicalOperatorScope[]
Array.reduce
callback, which checks each element and wraps it within the logical operator scope.
pseudocode
select['foo','bar','baz', or('qux')] ---> select['foo',and('bar'),and('baz'), or('qux')]
newLogicalOperatorScope(type: QuerySyntaxEnum, properties?: PropertyOrLogicalOperatorScope[]): LogicalOperatorScope
Returns new LogicalOperatorScope
object.
isLogicalOperator(value: QuerySyntaxEnum): boolean
Checks if a given enum value is equal to And
, Or
or Not
.
isLogicalOperatorScope(data: any): data is LogicalOperatorScope
Checks if a given prop is a LogicalOperatorScope
object.
isFunction(value: any): boolean
Checks if a given prop is a function
.
clone(obj: any):any
Performs a deep cloning of an object.
isQuerySchemeElement(obj: any): boolean
Checks if a given prop is a QuerySchemeElement
object.
combineReducers(...reducers: Fn[]) => (previous: any, current: any, index: number, org: any[])
Executes Array.reduce
callbacks - one by one - in a single iteration.
parseStringToTable(name: string, alias?: string): Table
Converts given string to Table
object.
parseStringToProperty(name: string, table?: Table): Property
Converts given string to Property
object.
isTableDotKeyString(value: any): boolean
Checks if a given param is a string
and matches pattern eg. superheros.name
.
isAliasString(value: any): boolean
Checks if a given param is a string
and matches pattern eg. writers.name AS author
.
isProperty = (value: any): value is Property
Checks if a given param is a Property
object.
isRowId = (value: any): boolean
Checks if a given param is a Property
object with defined type QuerySyntaxEnum.RowId
.
isAlias = (value: any): boolean
Checks if a given param is a Property
object with defined type QuerySyntaxEnum.Alias
.
isMySQLFunction = (value: any): value is FunctionData
Checks if a given param is a FunctionData
object.
isItemWithCustomId = (value: any): value is ItemWithCustomId
Checks if a given param is a ItemWithCustomId
object.
Contribute
There is still a lot to do, so if you want to be part of the Chego project and make it better, it's great. Whether you find a bug or have a feature request, please contact us. With your help, we'll make it a great tool.
Follow our kanban boards to be up to date
Join the team, feel free to catch any task or suggest a new one.
License
Copyright (c) 2019 Chego Team
Licensed under the MIT license.