gracenode-mysql
Version:
mysql module for gracenode framework.
184 lines (152 loc) • 4.62 kB
Markdown
Mysql module for gracenode framework.
This is designed to function within gracenode framework.
To add this package as your gracenode module, add the following to your package.json:
```
"dependencies": {
"gracenode": "",
"gracenode-mysql": ""
}
```
To use this module in your application, add the following to your gracenode bootstrap code:
```
var gracenode = require('gracenode');
// this tells gracenode to load the module
gracenode.use('gracenode-mysql');
```
To access the module:
```
// the prefix gracenode- will be removed automatically
gracenode.mysql
```
Access
<pre>
gracenode.mysql
</pre>
Configurations
```javascript
"modules": {
"mysql": {
"configNameOfYourChoice": {
"read": {
"database": "databaseName",
"host": "host or IP address",
"user": "databaseUser",
"password": "databasePassword",
"poolSize": <int optional>,
"options": {} // optional
},
"write": {
"database": "databaseName",
"host": "host or IP address",
"user": "databaseUser",
"password": "databasePassword",
"poolSize": <int optional>
"options": {} // optional
}
}{...}
}
}
```
`gracenode-mysql` supports connection options. To add options, add `options` in your configurations.
<pre>
MySql create(String configName)
</pre>
> Returns an instance of MySqlGroup class
##### MySqlGroup class
> **getOne**
<pre>
void getOne(String sql, Array params, Function callback)
</pre>
> Executes a "select" SQL query and passes a result to callback.
>> If no result is found, the funtion will throw an error.
```javascript
var mysql = gracenode.mysql.create('peopleDb');
mysql.getOne('SELECT age, gender FROM people WHERE name = ?', ['bob'], function (error, result) {
if (error) {
throw new Error('nothing found');
}
// do something here
});
```
> **getOneFromMaster**
Reads from "write-only" database.
> **getMany**
<pre>
void getMany(String sql, Array params, Function callback)
</pre>
> Executes a "select" SQL query and passes results to callback
>> If no result is found, the function will throw an error.
> **getManyFromMaster**
Reads from "write-only" database.
> **searchOne**
<pre>
void searchOne(String sql, Array params, Function callback)
</pre>
> Executes a "select" SQL query and passes a result to callback
>> No result will **NOT** throw an error.
> **searchOneFromMaster**
Reads from "write-only" database.
> **searchMany**
<pre>
void searchMany(String sql, Array params, Function callback)
</pre>
> Executes a "select" SQL query and passes results to callback
>> No result will **NOT** throw an error.
> **searchManyFromMaster**
Reads from "write-only" database.
> **write**
<pre>
void write(String sql, Array params, Function callback)
</pre>
> Executes "insert/update/delete/truncate/alter/create/drop/" SQL query
>> Can **NOT** be executed if the *type* is "ro"
> **transaction**
<pre>
void transaction(Function taskCallback, Function callback)
</pre>
> Creates Mysql transaction and allows you to execute transactional SQL queries in taskCallback.
>> Commit will be executed automatically on successful execution of taskCallback
>>> An error in taskCallback will cause auto-rollback and ends the transaction.
>>>> Can **NOT** be executed if the *type* is "ro"
```javascript
var mysql = gracenode.mysql.create('animalDb');
mysql.transaction(function (transactionMysql, finishCallback) {
transactionMysql.write('INSERT INTO animal (name, species) VALUES(?, ?)', ['dog', 'knine'], function (error, res) {
if (error) {
return finishCallback(error);
}
transactionMysql.write('INSERT INTO food (animalName, amount) VALUES(?, ?)', ['dog', 10], function (error, res) {
if (error) {
return finishCallback(error);
}
// taskCallback is done. now move forward
finishCallback();
});
});
},
function (error) {
if (error) {
throw new Error(error);
}
// All done and committed
});
```
> **placeHolder**
<pre>
Array placeHolder(Array params)
</pre>
> Creates and returns an array of *?* based on params given.
```javascript
var mysql = gracenode.create('people');
var params = ['jenny', 'ben', 'krista', 'ken'];
mysql.searchMany('SELECT * FROM people WHERE name IN (' + mylsq.placeHolder(params) + ')', params, function (error, res) {
if (error) {
throw new Error(error);
}
// do something here
});
```