‚̧Nevertheless Published Mine
    Wondering what‚Äôs next for npm?Check out our public roadmap! ¬Ľ

    modli-mysql

    3.1.0¬†‚Äʬ†Public¬†‚Äʬ†Published

    wercker status Code Climate Test Coverage

    Modli - MySQL Adapter

    This module provides adapter for the MySQL datasource for integration with Modli.

    Installation

    npm install modli-mysql --save
    

    Config and Usage

    When defining a property which will utilize the adapter it is required that a tableName be supplied:

    import { model, adapter, Joi, use } from 'modli';
    import mysql from 'modli-mysql';
     
    model.add({
      name: 'foo',
      version: 1,
      tableName: 'tblFoo'
      schema: {
        id: Joi.number().integer(),
        fname: Joi.string().min(3).max(30),
        lname: Joi.string().min(3).max(30),
        email: Joi.string().email().min(3).max(254).required()
      }
    });

    Then add the adapter as per usual with the following config object structure:

    adapter.add({
      name: 'mysqlFoo',
      source: mysql
      config: {
        host: {HOST_IP},
        username: {USERNAME},
        password: {PASSWORD},
        database: {DATABASE}
      }
    });

    You can then use the adapter with a model via:

    // Use(MODEL, ADAPTER)
    const mysqlTest = use('foo', 'mysqlFoo');

    Methods

    The following methods exist natively on the MySQL adapter:

    query

    Allows for passing standard MySQL queries:

    mysqlTest.query('SELECT * FROM tblFoo')
      .then(/*...*/)
      .catch(/*...*/);

    createTable

    Creates (IF NOT EXISTS) a table based on params:

    mysqlTest.createTable({
        'id': [ 'INT', 'NOT NULL', 'AUTO_INCREMENT', 'PRIMARY KEY'],
        'fname': [ 'VARCHAR(255)' ],
        'lname': [ 'VARCHAR(255)' ],
        'email': [ 'VARCHAR(255)' ]
      })
      .then(/*...*/)
      .catch(/*...*/);

    create

    Creates a new record based on object passed:

    mysqlTest.create({
        fname: 'John',
        lname: 'Smith',
        email: 'jsmith@gmail.com'
      })
      .then(/*...*/)
      .catch(/*...*/);

    read

    Runs a SELECT with optional WHERE:

    mysqlTest.read('fname="John"')
      .then(/*...*/)
      .catch(/*...*/);

    update

    Updates record(s) based on query and body:

    mysqlTest.update('fname="John"', {
        fname: 'Bob',
        email: 'bsmith@gmail.com'
      })
      .then(/*...*/)
      .catch(/*...*/);

    patch

    Patches (partial update) based on query and body:

    mysqlTest.patch('fname="John"', {
        fname: 'Bob',
      })
      .then(/*...*/)
      .catch(/*...*/);

    delete

    Deletes record(s) based on query:

    mysqlTest.delete('fname="Bob"')
      .then(/*...*/)
      .catch(/*...*/);

    extend

    Extends the adapter to allow for custom methods:

    mysqlTest.extend('myMethod', () => {
      /*...*/
    });

    Development

    The MySQL adapter requires the following enviroment variables to be set for running the tests. These should be associated with the MySQL instance running locally.

    MODLI_MYSQL_HOST,
    MODLI_MYSQL_USERNAME,
    MODLI_MYSQL_PASSWORD,
    MODLI_MYSQL_DATABASE
    

    This repository includes a base container config for running locally which is located in the /docker directory.

    Makefile and Scripts

    A Makefile is included for managing build and install tasks. The commands are then referenced in the package.json scripts if that is the preferred task method:

    • all (default) will run all build tasks
    • start will run the main script
    • clean will remove the /node_modules directories
    • build will transpile ES2015 code in /src to /build
    • test will run all spec files in /test/src
    • test-cover will run code coverage on all tests
    • lint will lint all files in /src

    Testing

    Running make test will run the full test suite. Since adapters require a data source if one is not configured the tests will fail. To counter this tests are able to be broken up.

    Test Inidividual File

    An individual spec can be run by specifying the FILE:

    make test FILE=some.spec.js
    

    The FILE is relative to the test/src/ directory.

    Deploys

    For deploying releases, the deploy TAG={VERSION} can be used where VERSION can be:

    <newversion> | major | minor | patch | premajor
    

    Both make {COMMAND} and npm run {COMMAND} work for any of the above commands.

    License

    Modli-MySQL is licensed under the MIT license. Please see LICENSE.txt for full details.

    Credits

    Modli-MySQL was designed and created at TechnologyAdvice.

    Install

    npm i modli-mysql

    DownloadsWeekly Downloads

    2

    Version

    3.1.0

    License

    MIT

    Last publish

    Collaborators

    • avatar