# @hero-page/hero-sql-querybuilder

> A library that assists in building dynamic SQL queries with various conditions and options

Latest version **1.0.0** (published 2023-04-14) · MIT license · 0 weekly downloads

## Install

```sh
npm install @hero-page/hero-sql-querybuilder
pnpm add @hero-page/hero-sql-querybuilder
yarn add @hero-page/hero-sql-querybuilder
bun add @hero-page/hero-sql-querybuilder
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2023-04-14 |
| First published | 2023-04-14 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 26.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Sam Chahine |
| Maintainers | hero-page |
| Keywords | sql, querybuilder, select, where, orderBy, groupBy, limit, insert, update |

## Links

- npm: https://www.npmjs.com/package/@hero-page/hero-sql-querybuilder
- npm.io page: https://npm.io/package/@hero-page/hero-sql-querybuilder

## Alternatives

- [gamedig](https://npm.io/package/gamedig.md) — 29.3K weekly downloads
- [join-monster](https://npm.io/package/join-monster.md) — 12.8K weekly downloads
- [masked](https://npm.io/package/masked.md) — 5.5K weekly downloads
- [@comunica/actor-query-process-explain-logical](https://npm.io/package/@comunica/actor-query-process-explain-logical.md) — 4.7K weekly downloads
- [@veracity/vui](https://npm.io/package/@veracity/vui.md) — 4.6K weekly downloads

## Recent versions

- 1.0.0 (latest) — 2023-04-14

## README

_This entire repository was created completely with **AI**, using the [hero-ai-package-creator](https://github.com/hero-page/hero-ai-package-creator), which is **open-source**, uses **GPT-4**, and is written & maintained by [**Sam Chahine**](https://hero.page/samir)_ ❣️🧞‍♀️ 



# hero-sql-querybuilder

A library that assists in building dynamic SQL queries with various conditions and options.

## Functions

### `select(columns, tableName)`

Builds a simple SELECT query with given columns and table name. Handles edge cases where columns are empty or not an array, and table name is not a string. For example, `select(['id', 'name'], 'users')` returns 'SELECT id, name FROM users'.

### `where(condition(s))`

Builds a WHERE clause with given condition(s). Handles single conditions, multiple conditions with AND or OR, and nested conditions. For example, `where('id = 1')` returns 'WHERE id = 1'; `where([{cond: 'id = 1', op: 'AND', cond: 'name = John'}])` returns 'WHERE id = 1 AND name = John'.

### `orderBy(column(s), sortOrder)`

Builds an ORDER BY clause with given column(s) and optional sort order. Handles single column or multiple columns with ASC/DESC. For example, `orderBy('name', 'DESC')` returns 'ORDER BY name DESC'.

### `groupBy(column(s))`

Builds a GROUP BY clause with given column(s). Handles single column, multiple columns, and checks for valid column names. For example, `groupBy(['name', 'age'])` returns 'GROUP BY name, age'.

### `limit(limitValue)`

Builds a LIMIT clause with the given limit value. Handles edge cases where limit is not a valid number or is less than 1. For example, `limit(10)` returns 'LIMIT 10'.

### `insert(tableName, columnNames, values)`

Builds a basic INSERT query with given table name, column names, and value(s). Handles single/multiple rows and checks for matching column and value count. For example, `insert('users', ['name', 'age'], [['John', '30'], ['Jane', '25']])` returns "INSERT INTO users (name, age) VALUES ('John', '30'), ('Jane', '25')".

### `update(tableName, columnValuePair, whereClause)`

Builds an UPDATE query with given table name, column and value pairs, and optional WHERE clause. Handles single/multiple column-value pairs and checks for matching column and value count. For example, `update('users', {name: 'John', age: '30'}, 'id = 1')` returns "UPDATE users SET name = 'John', age = '30' WHERE id = 1".

---

[Sam Chahine](https://github.com/kingmeers), at [Hero](https://hero.page)
                

### Tests for groupBy

![groupBy](https://img.shields.io/badge/groupBy()-4%20passed%2C%200%20failed.-13b285)

### Tests for select

![select](https://img.shields.io/badge/select()-4%20passed%2C%200%20failed.-13b285)

### Tests for update

![update](https://img.shields.io/badge/update()-3%20passed%2C%200%20failed.-13b285)

### Tests for where

![where](https://img.shields.io/badge/where()-1%20passed%2C%201%20failed.-ff69b4)

### Tests for insert

![insert](https://img.shields.io/badge/insert()-4%20passed%2C%200%20failed.-13b285)

### Tests for limit

![limit](https://img.shields.io/badge/limit()-4%20passed%2C%200%20failed.-13b285)

### Tests for orderBy

![orderBy](https://img.shields.io/badge/orderBy()-4%20passed%2C%200%20failed.-13b285)

---
_Source: https://npm.io/package/@hero-page/hero-sql-querybuilder · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
