UNPKG

waterline-sql-builder

Version:

Generate SQL (stage 5 query) from a Waterline statement (stage 4 query).

124 lines (120 loc) 4.05 kB
var Test = require('../../support/test-runner'); describe('Query Generation ::', function() { describe('RETURNING statements', function() { it('should generate an returning query', function(done) { Test({ query: { insert: { title: 'Slaughterhouse Five' }, into: 'books', returning: 'author' }, outcomes: [ { dialect: 'postgresql', sql: 'insert into "books" ("title") values ($1) returning "author"', bindings: ['Slaughterhouse Five'] }, { dialect: 'mysql', sql: 'insert into `books` (`title`) values (?)', bindings: ['Slaughterhouse Five'] }, { dialect: 'sqlite3', sql: 'insert into `books` (`title`) values (?) returning `author`', bindings: ['Slaughterhouse Five'] }, { dialect: 'oracledb', sql: 'insert into "books" ("title") values (:1) returning "author" into :2', bindings: ['Slaughterhouse Five', { 'columnName': 'author' }] }, { dialect: 'mariadb', sql: 'insert into `books` (`title`) values (?)', bindings: ['Slaughterhouse Five'] } ] }, done); }); it('should generate a returning query when using multiple values', function(done) { Test({ query: { insert: { title: 'Slaughterhouse Five', author: 'Kurt Vonnegut' }, into: 'books', returning: ['author', 'title'] }, outcomes: [ { dialect: 'postgresql', sql: 'insert into "books" ("author", "title") values ($1, $2) returning "author", "title"', bindings: ['Kurt Vonnegut', 'Slaughterhouse Five'] }, { dialect: 'mysql', sql: 'insert into `books` (`author`, `title`) values (?, ?)', bindings: ['Kurt Vonnegut', 'Slaughterhouse Five'] }, { dialect: 'sqlite3', sql: 'insert into `books` (`author`, `title`) values (?, ?) returning `author`, `title`', bindings: ['Kurt Vonnegut', 'Slaughterhouse Five'] }, { dialect: 'oracledb', sql: 'insert into "books" ("author", "title") values (:1, :2) returning "author","title" into :3,:4', bindings: ['Kurt Vonnegut', 'Slaughterhouse Five', { 'columnName': 'author'}, { 'columnName': 'title' }] }, { dialect: 'mariadb', sql: 'insert into `books` (`author`, `title`) values (?, ?)', bindings: ['Kurt Vonnegut', 'Slaughterhouse Five'] } ] }, done); }); it('should generate an returning query returning all values if possible', function(done) { Test({ query: { insert: { title: 'Slaughterhouse Five' }, into: 'books', returning: '*' }, outcomes: [ { dialect: 'postgresql', sql: 'insert into "books" ("title") values ($1) returning *', bindings: ['Slaughterhouse Five'] }, { dialect: 'mysql', sql: 'insert into `books` (`title`) values (?)', bindings: ['Slaughterhouse Five'] }, { dialect: 'sqlite3', sql: 'insert into `books` (`title`) values (?) returning *', bindings: ['Slaughterhouse Five'] }, { dialect: 'oracledb', sql: 'insert into "books" ("title") values (:1) returning "ROWID" into :2', bindings: ['Slaughterhouse Five', { 'columnName': 'ROWID' }] }, { dialect: 'mariadb', sql: 'insert into `books` (`title`) values (?)', bindings: ['Slaughterhouse Five'] } ] }, done); }); }); });