Module: Httpsql::ClassMethods
- Defined in:
- lib/httpsql.rb
Instance Method Summary collapse
-
#grape_documentation(ctx = nil) ⇒ Hash
Provide documentation for Grape end points.
-
#with_params(params = {}) ⇒ ActiveRecord::Relation
The method to call within API end points.
Instance Method Details
#grape_documentation(ctx = nil) ⇒ Hash
Provide documentation for Grape end points
59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/httpsql.rb', line 59 def grape_documentation(ctx=nil) columns.each do |c| opt_hash = {} if (k = httpsql_sql_type_conversion(c.type)) opt_hash[:type] = k end ctx.optional c.name, opt_hash end ctx.optional :field, type: Array, desc: "An array of strings: fields to select from the database" ctx.optional :group, type: Array, desc: "An array of strings: fields to group by" ctx.optional :order, type: Array, desc: "An array of strings: fields to order by" ctx.optional :join, type: Array, desc: "An array of strings: tables to join (#{httpsql_join_tables.join(',')})" end |
#with_params(params = {}) ⇒ ActiveRecord::Relation
The method to call within API end points
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/httpsql.rb', line 18 def with_params(params={}) @httpsql_params = params @httpsql_conds = [] @httpsql_fields = httpsql_fetch_param :field joins = httpsql_extract_joins groups = httpsql_extract_groups orders = httpsql_extract_orders httpsql_valid_params.each do |k,v| k, m = k.to_s.split('.') next if k.to_s == 'access_token' # column.sum, column.function=arg1, column.predicate=x if m httpsql_extract_method(k, m, v) # column[]=1&column[]=2 or column=x else httpsql_extract_default_predicates(k, v) end end @httpsql_conds = @httpsql_conds.inject{|x,y| x.and(y)} ar_rel = where(@httpsql_conds) ar_rel = ar_rel.select(@httpsql_fields) if @httpsql_fields.any? ar_rel = ar_rel.joins(joins) if joins.any? ar_rel = ar_rel.group(groups) if groups.any? ar_rel = ar_rel.order(orders) if orders.any? ar_rel end |