Skip to content

Commit

Permalink
Added 'query_errors' to report dynamic query errors.
Browse files Browse the repository at this point in the history
  • Loading branch information
gaspard committed May 16, 2011
1 parent 1153d1a commit 1c1fda6
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
10 changes: 7 additions & 3 deletions lib/zena/use/query_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,20 @@ module QueryBuilder
module ViewMethods
include RubyLess
safe_method [:query_parse, String] => {:class => String, :accept_nil => true}
safe_method :query_errors => {:class => String, :nil => true}

def find_node_by_zip(zip)
return nil unless zip
secure(Node) { Node.find_by_zip(zip) }
end

def query_errors
@query_errors
end

def query(class_name, node_name, pseudo_sql, opts = {})
type = opts[:type] || :find
@query_errors = nil
if klass = VirtualClass[class_name]
begin
query = klass.build_query(:all, pseudo_sql,
Expand All @@ -28,9 +34,7 @@ def query(class_name, node_name, pseudo_sql, opts = {})
return klass.do_find(:all, eval(query.to_s))
end
rescue ::QueryBuilder::Error => err
msg = "Error in dynamic query #{pseudo_sql.inspect}: #{err}"
js_data << "alert(#{msg.inspect})" if dev_mode?
Node.logger.info msg
@query_errors = "<span class='query'>#{pseudo_sql}</span> <span class='error'>#{err}</span>"
end
end
# error
Expand Down
8 changes: 7 additions & 1 deletion test/integration/zafu_compiler/query.yml
Original file line number Diff line number Diff line change
Expand Up @@ -237,4 +237,10 @@ select_group_count_having:
core_context:
# Ensure that :project rubyless method uses enrollable.
src: "<r:project do='origin || title'/>"
tem: "/ar1.prop\['origin'\] or var1.prop\['title'\]/"
tem: "/ar1.prop\['origin'\] or var1.prop\['title'\]/"

query_errors:
context:
c: 'badaboum'
src: "<r:query default='nodes' select='nodes in #{params[:c]}'><r:elsif test='query_errors' do='query_errors'/></r:query>"
res: "<span class='query'>nodes in badaboum</span> <span class='error'>Invalid scope 'badaboum'.</span>"

0 comments on commit 1c1fda6

Please sign in to comment.