@omegalabs/repo-mysql

1.0.0 • Public • Published

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.

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.

Readme

Keywords

none

Package Sidebar

Install

npm i @omegalabs/repo-mysql

Weekly Downloads

0

Version

1.0.0

License

ISC

Unpacked Size

17.8 kB

Total Files

9

Last publish

Collaborators

  • seanttaylor