@digitalwalletcorp/sql-builder
Version:
This is a library for building SQL
63 lines (62 loc) • 1.78 kB
TypeScript
type Token = {
type: 'IDENTIFIER';
value: string;
} | {
type: 'OPERATOR';
value: string;
} | {
type: 'NUMBER';
value: number;
} | {
type: 'BOOLEAN';
value: boolean;
} | {
type: 'STRING';
value: string;
} | {
type: 'NULL';
value: null;
} | {
type: 'UNDEFINED';
value: undefined;
} | {
type: 'PARENTHESIS';
value: '(' | ')';
};
/**
* SQLBuilderの条件文(*IF*)で指定された条件文字列を解析するためのAST。
* JavaScriptの文法をカバーするものではなく、SQLBuilderで利用可能な限定的な構文のみサポートする。
*/
export declare class AbstractSyntaxTree {
/**
* 与えられた条件文字列を構文解析し、entityに対する条件として成立するか評価する
*
* @param {string} condition "params != null && params.length > 10" のような条件
* @param {Record<string, any>} entity
* @returns {boolean}
*/
evaluateCondition(condition: string, entity: Record<string, any>): boolean;
/**
* 与えられた条件文字列をトークンに分割する
*
* @param {string} condition
* @returns {Token[]}
*/
tokenize(condition: string): Token[];
/**
* Shunting Yardアルゴリズムで構文を逆ポーランド記法(Reverse Polish Notation)に変換する
*
* @param {Token[]} tokens
* @returns {Token[]}
*/
shuntingYard(tokens: Token[]): Token[];
/**
* 逆ポーランド記法(Reverse Polish Notation)のトークンを評価する
*
* @param {Token[]} rpnTokens
* @param {Record<string, any>} entity
* @returns {boolean}
*/
evaluateRpn(rpnTokens: Token[], entity: Record<string, any>): boolean;
}
export {};