An easy-to-use Promise-based MySQL DAO implementation.
npm install @apigrate/mysqlutilsmysql) package. It provides promise-based functions making it easy to get objects out of database table rows with intuitive language. * __get__ - selects a single row by id
* __exists__ - similar to __get__, but returns a 1 if found or 0 if not found.
* __all__ - selects all rows in a table (offset and limit are supported for paging)
* __find__ - selects rows that meet criteria
* __count__ - similar to __find__, but returns a count of the rows that match the criteria
__one__ - selects and returns only one* of a list of rows that meet criteria
* __selectWhere__ - same as __find__, but an explicit where clause is used as input.
* __select__ - supports a fully parameterized SQL select statement
* __delete__ - delete a single row by its id
* __deleteOne__ - same as delete, but supports multi-column primary keys
* __deleteMatching__ - deletes anything that matches the provided criteria
* __deleteWhere__ - deletes anything that matches the provided WHERE clause
__Important Prerequsite__: your app should configure a mysql connection pool that it can pass to this library. This library is not opinionated about connection management. It does not close or otherwise manage pool connections directly.
``javascript
//var pool = (assumed to be provided by your app)
const {Dao} = require('@apigrate/mysqlutils');
//An optional configuration object containing some options that you might want to use on a table.
var opts = {
created_timestamp_column: 'created',
updated_timestamp_column: 'updated',
version_number_column: 'version'
};
var Customer = new Dao('t_customer', 'customer', opts, pool);
//Note, in addition to tables, you use this on views as well...
`
javascript
//Get a customer by id=27Customer.get(27)
.then(function(cust){
//cust = {id: 27, name: 'John Smith', city: 'Chicago', active: true ... }
})
.catch(function(err){
console.error(err.message);
});
`$3
`javascript
//Search for customers where status='active' and city='Chicago'Customer.find({status: 'active', city: 'Chicago'})
.then(function(customers){
//customers: an array of customer objects like,
// [ {id: 27, name: 'John Smith', city: 'Chicago' active: true ... }, {id: 28, name: 'Sally Woo', city: 'Chicago', active: true ... }, ...]
})
.catch(function(err){
console.error(err.message);
});
`todo: more examples!
Create
todo: more examples!Update
todo: more examples!Delete
todo: more examples!More
$3
The debug library is used. Use process.env.NODE_ENV='gr8:db' for general debugging. For verbose logging (outputs raw responses on create, update, delete operations) use gr8:db:verbose.Note: as of version 3.x logger injection is no longer supported and will be ignored.
#### What gets logged?
1. error messages (database exceptions) are logged to
console.error
4. at DEBUG='gr8:db', the following is logged:
* method call announcement
* SQL used for query/execution
* a count of the results (if any).
5. at DEBUG='gr8:db:verbose'`, the following is logged: