silly-sql

    1.0.0 • Public • Published

    Silly SQL

    SQL Query Construction Toolset

    Basic usage:

    var query = sql.query([
      'SELECT {fields} FROM mytable {otherTableJoin} {where}',
        '{sort} {limit}'
    ]);
     
    query.otherTableJoin = 'INNER JOIN othertable ON othertable.mytableid = mytable.id';
     
    query.fields = sql.fields();
    query.fields
      .addSelectMap('mytable', { id:'myid', name:'myName' })
      .addSelectMap('othertable', { id:'otherid', name:'otherName' });
     
    query.where = sql.where('id > 5').and('(created_at < NOW() OR created_at IS NULL)');
    query.sort = sql.sort('-id');
    query.limit = sql.limit(10, 5);
     
    query.toString();
    // => SELECT "mytable"."id" AS "myid", "mytable"."name" AS "myName", "othertable"."id" AS "otherId", "othertable"."name" AS "othername"
    //      FROM mytable
    //      INNER JOIN othertable ON othertable.mytableid = mytable.id
    //      WHERE id > 5 AND (created_at < NOW() OR created_at IS NULL)
    //      ORDER BY id DESC
    //      LIMIT 10 OFFSET 5

    Escaping values:

    var query = sql.query('UPDATE mytable SET name=$name, age=$age');
     
    query.$('name', 'Alice');
    query.$('age', 38);
     
    query.toString();
    // => UPDATE mytable SET name=$1, age=$2
    query.$values
    // => ['Alice', 38]

    Inserting an object:

    var query = sql.query('INSERT INTO mytable ({columns}) VALUES {values}');
     
    var myInput = {
      name: 'Bob',
      age: 54
    };
    query.columns = sql.fields().addObjectKeys(myInput);
    query.values = sql.fields().addObjectValues(myInput);
     
    query.toString();
    // => INSERT INTO mytable ("name", "age") VALUES $1, $2
    query.$values
    // ['Bob', 54]

    Authors

    Keywords

    none

    Install

    npm i silly-sql

    DownloadsWeekly Downloads

    1

    Version

    1.0.0

    License

    BSD

    Last publish

    Collaborators

    • johndotawesome