code: function execute () {
      // check access and set access params
      this.accessControl()
      // build select
      this.select = sql.select(this.model, this.args)
      // debug
      debug(this.select.sql, this.select.params)
      // do query
      defined(this.model.cache)
          && this.args.cache !== false
          && (!this.modelViewEngine || this.modelViewEngine.cache !== false)
          ? this.executeQueryCached()
          : this.executeQueryDirect()
      // add queries for related records if any
      this.executeRelated()
      // build result
      return this.result()
  }
docs: @function execute
  
  execute query
  
  @returns {Promise}