1.0.0 • Published 4 years ago

@omegalabs/repo-mysql v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

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

  1. Do an npm install @omegalabs/repo-mysql (shortened as repo-mysql below) to install the package on your local machine.
  2. Require the package in your project along with the repo-core package.
  3. Instantiate the repo-mysql package with options (see Configuration Options below.)
  4. Instantiate the repo-core package, providing the repo-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.

optiontypedescription
datasourceConfigobjectConfiguration options for the datasource.
Datasource Configuration
optiontypedefaultdescription
databaseUsernamestringrootUsername to connect to the database.
databasePasswordstringrootPassword to connect to the database.
databasePortinteger3306Port number to connect to the database.
databaseHoststringlocalhostHostname to connect to the database.
databaseNamestringtest_databaseName 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.

optiontypedefaultdescription
connectionLimitinteger10Maximum number of concurrent connections to the database.
idleTimeoutMillisinteger30000msMaximum time for a query to execute; maps to the mysql2 timeout option.
connectTimeoutinteger30000msMaximum time allowed to establish a connection to the database option.