Skip to content

Tehem/mysql-kiss-orm

Repository files navigation

KISS Orm for MySQL

npm License code style: prettier Build Status Maintainability Test Coverage

Table of Contents

Install

This is a Node.js module available through the npm registry.

Before installing, download and install Node.js. Node.js 8.12 or higher is required.

Installation is done using the npm install command:

$ npm install mysql-kiss-orm

Introduction

Small ORM wrapper for node-mysql2,

If you just want to manipulate Javascript object and don't want to bother with building SQL to query your MySQL database.

This library provide a simple abstraction capable of handling most common queries you will need (SELECT, INSERT, UPDATE, DELETE) through a fluid (sort of) API.

This library use the async/await syntax.

Examples

const mysqlConfig = {
    host: 'localhost',
    user: 'root',
    password: '',
    database: ''
  };

const mysql = new MysqlConnector(mysqlConfig);
await mysql.connect();

const user = { name: 'John Doe', email: '[email protected]' };
const results = await mysql.insertOne('users', user);
// INSERT INTO users (name, email) VALUES ('John Doe', '[email protected]');
const insertId = results.insertId; // id = 12345


await mysql.insertMany('users', [{ name: 'Jake Coffee' }, { name: 'John Latte' }]);
// INSERT INTO users (name) VALUES ('Jake Coffee'), ('John Latte');

// update all matching rows (but with limit 1)
await mysql.updateOne('users', { id: 123 }, { name: 'Jane Doe' });
// UPDATE users SET name='Jane Doe' WHERE id=123

await mysql.updateMany('users', { type: 2 }, { country: 'France' });
// UPDATE users SET country='France' WHERE type=2
const countUpdated = results.affectedRows;

// delete all matching row (but with limit 1)
await mysql.deleteOne('users', user);
// DELETE FROM users WHERE id=user.id ...

// Return all matching rows with limit, offset and sort
const users = await mysql.findMany('users', { type: 2 }, { offset: 10, limit: 10, sort: { name: 'ASC' } });
// users = [{ id: 123, name: 'Jane Doe', ... }, { ... } ]

// Return the first matching row
const user = await mysql.findOne('users', { id: 123 }, { projections: ['name'] });
// user = { name: 'Jane Doe' }

// Row count (COUNT *)
const count = await mysql.count('users', { type: 5 });
// count = 122

// RAW prepared queries
const [ rows ] = await mysql.query('SELECT id FROM users WHERE email=?', ['[email protected]']);
// rows = [{ id: 42, id: 965, id: 394 }]

await mysql.disconnect();

Running tests

Set the environment variables MYSQL_DATABASE, MYSQL_HOST, MYSQL_PORT, MYSQL_USER and MYSQL_PASSWORD. Then run npm test.

For example, if you have an installation of mysql running on localhost:3306 and no password set for the root user, run:

$ mysql -u root -e "CREATE DATABASE IF NOT EXISTS mysql_kiss_orm_test"
$ MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_DATABASE=mysql_kiss_orm_test MYSQL_USER=root MYSQL_PASSWORD= npm test