@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-mysqlbelow) to install the package on your local machine. - Require the package in your project along with the
repo-corepackage. - Instantiate the
repo-mysqlpackage with options (see Configuration Options below.) - Instantiate the
repo-corepackage, providing therepo-mysqlas 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. |
6 years ago