87 lines
2.3 KiB
Markdown
87 lines
2.3 KiB
Markdown
|
|
Below is a **concise README** that covers **both files together** as a single small project.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
# SQLite Query Builder and Database Manager
|
||
|
|
|
||
|
|
This project provides a **lightweight SQLite database manager and SQL query builder** for Node.js, built on top of `better-sqlite3`. It offers a programmatic way to construct, execute, and synchronize SQL queries without writing raw SQL strings manually.
|
||
|
|
|
||
|
|
## Features
|
||
|
|
|
||
|
|
* SQLite database management using `better-sqlite3`
|
||
|
|
* Programmatic construction of `SELECT`, `INSERT`, `UPDATE`, `DELETE`, and `COUNT` queries
|
||
|
|
* Support for joins, unions, filters, grouping, ordering, limits, and offsets
|
||
|
|
* Automatic ID generation using time-based unique identifiers
|
||
|
|
* Basic schema management (table creation, column addition, column tracking)
|
||
|
|
* Optional synchronization hook for distributed or client-server setups
|
||
|
|
* No external ORM dependency
|
||
|
|
|
||
|
|
## Architecture Overview
|
||
|
|
|
||
|
|
* **databaseManager**
|
||
|
|
Central entry point responsible for:
|
||
|
|
|
||
|
|
* Database connection and execution
|
||
|
|
* Schema creation and migration helpers
|
||
|
|
* Query parsing and execution routing
|
||
|
|
|
||
|
|
* **querySQL / joinSQL**
|
||
|
|
Declarative query objects that describe:
|
||
|
|
|
||
|
|
* Tables, columns, values
|
||
|
|
* Filters and search expressions
|
||
|
|
* Joins, unions, grouping, and ordering
|
||
|
|
|
||
|
|
* **Query parsing layer**
|
||
|
|
Converts query objects into valid SQLite SQL statements with parameter binding.
|
||
|
|
|
||
|
|
## Basic Usage
|
||
|
|
|
||
|
|
### Create a table and column
|
||
|
|
|
||
|
|
```js
|
||
|
|
import database from "./source/database.js";
|
||
|
|
|
||
|
|
database.createTable( "user" );
|
||
|
|
database.addColumn( "name", "VARCHAR", "user" );
|
||
|
|
```
|
||
|
|
|
||
|
|
### Insert data
|
||
|
|
|
||
|
|
```js
|
||
|
|
import querySQL from "./source/querySQL.js";
|
||
|
|
|
||
|
|
var query = new querySQL();
|
||
|
|
query.type = "insert";
|
||
|
|
query.table = "user";
|
||
|
|
query.setValue( "name", "john" );
|
||
|
|
|
||
|
|
database.query( query );
|
||
|
|
```
|
||
|
|
|
||
|
|
### Select data
|
||
|
|
|
||
|
|
```js
|
||
|
|
var query = new querySQL();
|
||
|
|
query.type = "select";
|
||
|
|
query.table = "user";
|
||
|
|
query.find( "name", "john" );
|
||
|
|
|
||
|
|
var result = database.query( query );
|
||
|
|
console.log( result );
|
||
|
|
```
|
||
|
|
|
||
|
|
## Intended Use
|
||
|
|
|
||
|
|
* Small to medium Node.js applications
|
||
|
|
* Embedded or local SQLite-backed tools
|
||
|
|
* Projects needing structured SQL generation without a full ORM
|
||
|
|
* Environments where raw SQL strings are undesirable
|
||
|
|
|
||
|
|
## Notes
|
||
|
|
|
||
|
|
* This is **not a full ORM**; it focuses on query construction and execution.
|
||
|
|
* Schema changes are tracked via an internal `tableColumns` table.
|
||
|
|
* Designed for synchronous SQLite access via `better-sqlite3`.
|
||
|
|
|