__save__(callback, txn) {

    let db = this.db;

    if(typeof callback !== 'function') {
      callback = function() {};
    }

    if (this.fieldList().indexOf('updated_at') !== -1) {
      this.set('updated_at', new Date());
    }

    let query = this.__generateSaveQuery__();

    let source = txn ? txn : this.db;

    source.query(
      query.sql,
      query.params,
      (err, result) => {

        if (err) {
          this.setError('_query', err.message, err.code);
        } else {
          result.rows.length && this.__load__(result.rows[0], true);
        }

        callback.call(this, this.errorObject());

      }
    );

  }
Saves model to database
@param {function} callback Method to execute upon completion, returns error if failed (including validations didn't pass)
@param {Transaction} txn OPTIONAL: SQL transaction to use for save
@private