Skip to content

MySQL Data Provider implementation for rduk-data

License

Notifications You must be signed in to change notification settings

WHASQ/rduk-data-mysql

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RDUK - MySQL Data Provider (WIP)

Build Status Coverage Status Greenkeeper badge JavaScript Style Guide

This module is an implementation of @rduk/data/lib/base for MySQL.

warning : Not production ready yet

Installation

Peer dependencies

Don't forget to add this modules to your project:

npm i --save @rduk/configuration @rduk/data mysql @rduk/data-mysql

Configuration

---
connections:
  -
    name: conn1
    user: ${DB_USER}
    password: ${DB_PASSWORD}
    database: ${DB_NAME}
    timeout: ${DB_TIMEOUT}
data:
  default: mysql
  providers:
    -
      name: mysql
      type: '@rduk/data-mysql'
      connection: conn1

See @rduk/configuration for more information.

Usage

Insert

First, instantiate a new QueryProvider

const Visitor = require('@rduk/data/lib/sql/visitor/expression')
const Translator = require('@rduk/data/lib/sql/translator/expression')
const DefaultQueryProvider = require('@rduk/data/lib/query/default')

const provider = new DefaultQueryProvider(Visitor, Translator)

Next, prepare an InsertExpression

const InsertExpression = require('@rduk/data/lib/sql/expression/insert')
const SourceExpression = require('@rduk/data/lib/expression/source')

let expression = new InsertExpression(new SourceExpression('users'))
let obj = new ObjectLiteralExpression([
    new FieldExpression('email', new PropertyExpression(new NameExpression('this'), 'email')),
    new FieldExpression('username', new PropertyExpression(new NameExpression('this'), 'username')),
    new FieldExpression('password', new PropertyExpression(new NameExpression('this'), 'password')),
    new FieldExpression('salt', new PropertyExpression(new NameExpression('this'), 'salt'))
])
let assignment = new LambdaExpression(obj, [])
expression.assignments.push(assignment)

Finally, execute your query

provider.execute(expression, {
    email: '[email protected]',
    username: 'kimung',
    password: '$2y$10$jMA23KsnU7kMQq1Wlr6PbOJWb0kD1j1P1RDdylfL739XE3gcX7UWq',
    salt: '5f7086760c3d96f5f90faac2f46c59940d83d8c84df5beef3725d8d8f02171b1'
}).then(result => {
    console.log(result);
})

/**
 * Generates and executes:
 *   - command: 'INSERT INTO users (email, username, password, salt) VALUES (?, ?, ?, ?)'
 *   - parameters: [
 *       '[email protected]',
 *       'kimung',
 *       '$2y$10$jMA23KsnU7kMQq1Wlr6PbOJWb0kD1j1P1RDdylfL739XE3gcX7UWq',
 *       '5f7086760c3d96f5f90faac2f46c59940d83d8c84df5beef3725d8d8f02171b1',
 *     ]
 * 
 */

License and copyright

See LICENSE file.

About

MySQL Data Provider implementation for rduk-data

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%