Example #1
0
var getColsAndValues = function(obj) {
    var cols = [];
    var values = [];

    for(var p in obj) {
        cols.push(pgEscape.ident(changeCase.snakeCase(p)));

        var value = obj[p];

        // TODO not all cases are covered

        values.push(pgPrepare.prepareValue(value));    }

    return { cols: cols, values: values };
};
Example #2
0
var buildDeleteQuery = function(req, tableName, id, whereOption) {
    var query = 'DELETE FROM %TABLE% WHERE %IDCOL% = %ID% %INNERWHERE%';

    query = query.replace(/%TABLE%/g, pgEscape.ident(tableName));
    query = query.replace(/%IDCOL%/g, schemaProvider.getIdColumn(tableName));

    // TODO can be null
    var innerWhere = evaluateInnerWhere(req, query, whereOption, 'AND');

    query = innerWhere.query;

    var values = innerWhere.values.concat([id]);

    query = query.replace(/%ID%/g, '$' + (values.length));

    return { query: query, values: values };
};
Example #3
0
var buildAddQuery = function(req, addObj, tableName) {
    var query = 'INSERT INTO %TABLE% (%COLS%) VALUES (%VALUES%) RETURNING %IDCOL%';

    query = query.replace(/%TABLE%/g, pgEscape.ident(tableName));
    query = query.replace(/%IDCOL%/g, schemaProvider.getIdColumn(tableName));

    var colsAndValues = getColsAndValues(addObj);
    var placeholders = [];

    for(var i = 0; i < colsAndValues.values.length; i++)
        placeholders.push('$' + (i+1));

    query = query.replace(/%COLS%/g, colsAndValues.cols.join(', '));
    query = query.replace(/%VALUES%/g, placeholders.join(', '));

    return { query: query, values: colsAndValues.values };
};
Example #4
0
var prepareSelectQuery = function(req, options, tableName) {
    var query = 'SELECT %COLUMNS% FROM ( SELECT %INNERCOLUMNS% FROM %SOURCE% %INNERWHERE%) AS source';

    var source = evaluateOption('', options.source, req, '', '');

    var innerWhere = null;

    if(source) {
        query = query.replace('%SOURCE%', '(' + source + ')');
        query = query.replace('%INNERWHERE%', '');
    } else {
        query = query.replace('%SOURCE%', pgEscape.ident(tableName));

        innerWhere = evaluateInnerWhere(req, query, options.where);

        query = innerWhere.query;
    }

    var odataCols = evaluateOption('', options.odataSelect, req, '', ', ');

    if(!odataCols)
        odataCols = '*';

    query = query.replace(/%COLUMNS%/g, odataCols);

    var cols = evaluateOption('', options.select, req, '', ', ');

    if(!cols)
        cols = odataCols ? odataCols : '*';

    query = query.replace(/%INNERCOLUMNS%/g, cols);

    var values = [];

    if(innerWhere && innerWhere.values)
        values = innerWhere.values;

    return { query: query, values: values };
};
Example #5
0
var buildEditQuery = function(req, updateObj, tableName, id, whereOption) {
    var query = 'UPDATE %TABLE% SET %SETS% WHERE %IDCOL% = %ID% %INNERWHERE%';

    query = query.replace(/%TABLE%/g, pgEscape.ident(tableName));
    query = query.replace(/%IDCOL%/g, schemaProvider.getIdColumn(tableName));
    query = query.replace(/%ID%/g, pgPrepare.prepareValue(id));

    // TODO can be null
    var innerWhere = evaluateInnerWhere(req, query, whereOption, 'AND');

    query = innerWhere.query;

    var colsAndValues = getColsAndValues(updateObj);
    var sets = [];

    for(var i = 0; i < colsAndValues.cols.length; i++)
        sets.push(colsAndValues.cols[i] + ' = $' + (i+1+(innerWhere.values.length || 0)));

    query = query.replace(/%SETS%/g, sets.join(', '));

    var values = innerWhere.values.concat(colsAndValues.values);

    return { query: query, values: values };
};