**WARNING!!!** It's a legacy version of current library! *Do not use in release product!!*

# SQLEasy.js
module for simple works from sqlite3 (JavaScript edition)
## Prepare for work (install from github)
Use npm from install in your project:
```bash
npm install sql-easy-lib
```
import database object in your project
``` javascript
const SQLEasy = require('sql-easy-lib');
var database = new SQLEasy.database('/path/to/database.db');
```
This object have 4 methods: add, remove, set, get
## Prepare for work (install from github)
My module use module **better-sqlite3**, you must download it.
```bash 
npm install better-sqlite3
```
from next, you can download folder of project, and load in folder "node_modules"
``` bash
cd node_modules
git clone https://github.com/Nikiroy78/SQLEasy.js.git
```
import database object in your project
``` javascript
const SQLEasy = require('SQLEasy.js');
var database = new SQLEasy.database('/path/to/database.db');
```
This object have 4 methods: add, remove, set, get
## Methods of SQLEasy object
### get
This method getting date from included database
```javascript
const sqlite = require('SQLEasy.js');
var database = sqlite.database('/path/to/database.db');

console.log(database.get('table'));
```
output...
``` javascript
[{'ID': 0, 'content': 'content 1'}, {'ID': 1, 'content': 'other content'}, {'ID': 2, 'content': 'Content number 3 :)'}, {'ID': 3, 'content': 'etc.'}]
```

You can apply condition's settings from filt your data...
```javascript
const sqlite = require('SQLEasy.js');
var database = sqlite.database('/path/to/database.db');

console.log(database.get('table', [{'ID': 0}, {'content': 'etc.'}]));
```
output...
``` javascript
[{'ID': 0, 'content': 'content 1'}, {'ID': 3, 'content': 'etc.'}]
```
Response show is...
```SQL
SELECT * FROM table WHERE (ID=0) OR (content='etc.')
```
And you edit uploaded columns
```javascript
const sqlite = require('SQLEasy.js');
var database = sqlite.database('/path/to/database.db');

console.log(database.get('table', [{'ID': 0}, {'content': 'etc.'}], 'content'));
```
output...
``` javascript
[{'content': 'content 1'}, {'content': 'etc.'}]
```
Response show is...
```SQL
SELECT content FROM table WHERE (ID=0) OR (content='etc.')
```
### add
This is sql response
```SQL
INSERT
```
Using add method in your code (from your simply, we used old date from last database).
```javascript
const sqlite = require('SQLEasy.js');
var database = sqlite.database('/path/to/database.db');

database.add('table', [{'ID': 4, 'content': 'test example, from fucking tests :)'}])
console.log(database.get('table'));
```
output...
```javascript
[{'ID': 0, 'content': 'content 1'}, {'ID': 1, 'content': 'other content'}, {'ID': 2, 'content': 'Content number 3 :)'}, {'ID': 3, 'content': 'etc.'}, {'ID': 4, 'content': 'test example, from fucking tests :)'}]
```
### remove
Using remove method in your code (from your simply, we used old date from last database).
```javascript
const sqlite = require('SQLEasy.js');
var database = sqlite.database('/path/to/database.db');

database.remove('table', {'ID': 4});
console.log(database.get('table'));
```
output...
```javascript
[{'ID': 0, 'content': 'content 1'}, {'ID': 1, 'content': 'other content'}, {'ID': 2, 'content': 'Content number 3 :)'}, {'ID': 3, 'content': 'etc.'}]
```
### set
Using set method in your code (from your simply, we used old date from last database).
```javascript
const sqlite = require('SQLEasy.js');
var database = sqlite.database('/path/to/database.db');

database.set('table', {'ID': 3}, {'content': 'edited'});  // First param - index key, found param - edit content...
console.log(database.get('table'));
```
output...
```javascript
[{'ID': 0, 'content': 'content 1'}, {'ID': 1, 'content': 'other content'}, {'ID': 2, 'content': 'Content number 3 :)'}, {'ID': 3, 'content': 'edited'}]
```
### execute
This is important method from execute your SQL script in your code.
Using method **execute** in test code (from your simply, we used old date from last database).
```javascript
const sqlite = require('SQLEasy.js');
var database = sqlite.database('/path/to/database');

var data = database.execute('SELECT * FROM table');
console.log(data);
```
output...
```javascript
[{'ID': 0, 'content': 'content 1'}, {'ID': 1, 'content': 'other content'}, {'ID': 2, 'content': 'Content number 3 :)'}, {'ID': 3, 'content': 'etc.'}]
```
### getIndex
Use this method from getting index value.
```javascript
const sqlite = require('SQLEasy.js');
var database = sqlite.database('/path/to/database.db');

console.log(database.get('table'));
console.log(database.getIndex('table', 'ID'));
```
output...
```javascript
[{'ID': 0, 'content': 'content 1'}, {'ID': 1, 'content': 'other content'}, {'ID': 3, 'content': 'Content number 3 :)'}, {'ID': 4, 'content': 'edited'}]
2
```
## Other functions that you can use in this module
### get_from_key
This function needs from works data in buffer.
The main advantage of this method is that you do not need to request data from the database every time, it is enough to use the data uploaded to memory:
```javascript
// Legacy method!
const sqlite = require('SQLEasy.js');
var database = sqlite.database('/path/to/database.db');
var rolesData = database.get('users').map(i => {
	return {
		user: i,
		role_data: database.get('role', [{id: i.role}])
	}
});
```
```javascript
// New method!
const sqlite = require('SQLEasy.js');
var database = sqlite.database('/path/to/database.db');
var roleData = database.get('role', [{id: i.role}]);
var rolesData = database.get('users').map(i => {
	return {
		user: i,
		role_data: sqlite.get_from_key(roleData, [{id: i.role}])
	}
});
```