UNPKG

sql-dynamic-where

Version:

Dynamically handle multiple WHERE SQL statements

107 lines (87 loc) 3.41 kB
``` ___ _ __ ___ | \ _ _ _ _ __ _ _ __ (_)__ \ \ / / |_ ___ _ _ ___ | |) | || | ' \/ _` | ' \| / _| \ \/\/ /| ' \/ -_) '_/ -_) |___/ \_, |_||_\__,_|_|_|_|_\__| \_/\_/ |_||_\___|_| \___| |__/ ``` Dynamically handle multiple WHERE clauses in your SQL statements. This package makes it easier to pass in query parameters from an endpoint into your SQL query string. If a value in any of the WHERE statements is undefined it will be skipped in the clauses string. ## Setup Adding sql-dynamic-where to your project ```bash npm i sql-dynamic-where ``` Adding sql-dynamic-where to a script ```js const sdw = require('sql-dynamic-where') dynamicWhere = new sdw(); ``` ## Examples Generating WHERE clauses with multiple variables ```js // Clear any previously stored values dynamicWhere.clear(); // Add where clauses dynamicWhere.addFirst('name', sdw.Comparison.Equals, 'Jacob'); dynamicWhere.add(sdw.Logic.And, 'age', sdw.Comparison.LessThan, 50); dynamicWhere.add(sdw.Logic.Or, 'eyes', sdw.Comparison.DoesNotEqual, 'blue'); // Returns: WHERE name = 'Jacob' AND age < 50 OR eyes != 'blue' dynamicWhere.getClauses() ``` Generating WHERE clauses with multiple variables, some undefined ```js // Clear any previously stored values dynamicWhere.clear(); // Add where clauses dynamicWhere.addFirst('name', sdw.Comparison.Equals, 'Jacob'); dynamicWhere.add(sdw.Logic.And, 'age', sdw.Comparison.LessThan, undefined); dynamicWhere.add(sdw.Logic.Or, 'eyes', sdw.Comparison.DoesNotEqual, 'blue'); // Returns: WHERE name = 'Jacob' OR eyes != 'blue' dynamicWhere.getClauses() ``` Generating WHERE clauses with a placeholder string for the values ```js // Clear any previously stored values dynamicWhere.clear(); // Add where clauses dynamicWhere.addFirst('name', sdw.Comparison.Equals, 'Jacob'); dynamicWhere.add(sdw.Logic.And, 'age', sdw.Comparison.LessThan, 50); dynamicWhere.add(sdw.Logic.Or, 'eyes', sdw.Comparison.DoesNotEqual, 'blue'); // Returns ['Jacob', 50, 'blue'] dynamicWhere.getValues() // Returns: WHERE name = (?) AND age < (?) OR eyes != (?) dynamicWhere.getClausesWithValuePlaceholders() ``` Generating WHERE clauses snippet without the WHERE keyword ```js // Clear any previously stored values dynamicWhere.clear(); // Add where clauses dynamicWhere.add(sdw.Logic.Or, 'name', sdw.Comparison.Equals, 'Jacob'); dynamicWhere.add(sdw.Logic.And, 'age', sdw.Comparison.LessThan, 50); // Notice that true is being passed into this function // Returns: OR name = (?) AND age < (?) dynamicWhere.getClauses(true) ``` ## Function Overrides Add additional values to skip in the clause ```js addFirst(field, comparisonOperator, value, override = []) add(logicalOperator, field, comparisonOperator, value, override = []) ``` Include leading logic operator and remove WHERE keyword ```js getClauses(leadingLogicalOperator = false) ``` Include leading logic operator and remove WHERE keyword Define a different placeholder string ```js getClausesWithValuePlaceholders(leadingLogicalOperator = false, placeholderString = '(?)') ``` ## Support Report bugs on the [issues page](https://github.com/imjncarlson/sql-dynamic-where/issues) Reach out to <imjncarlson@gmail.com> if you have questions! ## License [MIT](https://choosealicense.com/licenses/mit/)