argile

Convert SQL rows to js objects

Usage no npm install needed!

<script type="module">
  import argile from 'https://cdn.skypack.dev/argile';
</script>

README

argile

Convert SQL rows to js object(s).

Installation

npm install --save argile

How does it work ?

Database

capture

The figure above pesents a simple database. We want to retrieve all the posts.

SQL request

The following request returns all the data in the database.

  SELECT
    post.id,
    post.title,
    author.username,
    tag.id AS "idTag",
    tag.label
  FROM post
  INNER JOIN author ON author.id = post.author_id
  LEFT JOIN post_tag ON post_tag.post_id = post.id
  LEFT JOIN tag ON tag.id = post_tag.tag_id
  ORDER BY post.id, tag.label

Construct the JS result

Now, to convert the SQL result to JS objects, we design an object that will be the returned result.
Here, we want to construct by post, an array of tags and an user object.

A string represents the SQL key that will match the correponding return js object property.
The * character tags the SQL string as a primary key. It is imperative to define a primary key for sub arrays.

  {
    id    : 'id',
    title : 'title',
    author : {
      username : 'username'
    },
    tags : [{
      id    : '*idTag',
      label : 'label'
    }]
  }

Conversion

  var argile = require('argile');

  var res = argile.convert(SQLrows, {
    id    : 'id',
    title : 'title',
    author : {
      username : 'username'
    },
    tags : [{
      id    : 'idTag',
      label : 'label'
    }]
  });

We assume SQLrows is an array of JS objects constructed from the SQL request.

The conversion keeps the SQL order defined in the SQL request.

API

The module has only one function argile.convert(SQLrows, constructedResult).

  • {Array} SQLrows
  • {Object} constructedResult

It returns an Array