@omegalabs/repo-mysql v1.0.0
MySQL Repository
This module is intended for use with the @omegalabs/repo-core
package (shortened as repo-core
below.) When used with the repo-core
package this module provides an implementation of the repo-core
interface for a MySQL database.
Installation and Use
- Do an
npm install @omegalabs/repo-mysql
(shortened asrepo-mysql
below) to install the package on your local machine. - Require the package in your project along with the
repo-core
package. - Instantiate the
repo-mysql
package with options (see Configuration Options below.) - Instantiate the
repo-core
package, providing therepo-mysql
as an argument.
For detailed explanation of the API the repository-core
documentation.
Tests
Run the unit tests for repo-mysql
with the npm test
command. Because the unit tests require a running MySQL server docker-compose
is used to execute the tests. You must have docker
and docker-compose
installed to run this test suite. The test suite will produce a report afer the test run is complete.
Example Usage
const config = {
datasourceConfig: {
databaseHost: 'mysql',
databasePassword: 'root',
databaseUsername: 'root',
databaseName: 'my_database'
},
connectTimeout: 30
};
const mysqlRepo = require('@seanttaylor/omega-repo-mysql)(config);
const Repository = require('@seanttaylor/omega-repository-core)
const beerRepo = Repository(mysqlRepo);
const beer = {
name: 'Indiana Pale Ale',
kind: 'ale'
}
const result = await beerRepo.add(beer, 'beers_table');
/*{
error: null,
status: 'ok',
data: [
{
_id: '5e2f99c9fa38672ff424622b'
name: 'Indiana Pale Ale',
kind: 'ale',
_createdAt: '2020-01-28T02:19:33Z'
}
]
}*/
const searchResult = await beerRepo.findOne('5e2f99c9fa38672ff424622b', 'beers_table);
/*
Same output as above.
*/
Configuration Options
Fields and acceptable values for the options object of repo-mysql
.
option | type | description |
---|---|---|
datasourceConfig | object | Configuration options for the datasource. |
Datasource Configuration
option | type | default | description |
---|---|---|---|
databaseUsername | string | root | Username to connect to the database. |
databasePassword | string | root | Password to connect to the database. |
databasePort | integer | 3306 | Port number to connect to the database. |
databaseHost | string | localhost | Hostname to connect to the database. |
databaseName | string | test_database | Name of the database. |
Additional MySQL Configuration
Below are additional options that may be included on the repo configuration object, outside the datasourceConfig object. See the mysql2
documentation for more information on available options.
option | type | default | description |
---|---|---|---|
connectionLimit | integer | 10 | Maximum number of concurrent connections to the database. |
idleTimeoutMillis | integer | 30000ms | Maximum time for a query to execute; maps to the mysql2 timeout option. |
connectTimeout | integer | 30000ms | Maximum time allowed to establish a connection to the database option. |
4 years ago