| rev | line source | 
| bsw@95 | 1 local id     = param.get("id") | 
| bsw@95 | 2 local min_id = param.get("min_id") | 
| bsw@95 | 3 local max_id = param.get("max_id") | 
| bsw@95 | 4 local initiative_id = param.get("initiative_id") | 
| bsw@95 | 5 local order  = param.get("order") | 
| bsw@95 | 6 local limit  = param.get("limit", atom.integer) | 
| bsw@95 | 7 | 
| bsw@95 | 8 local suggestions_selector = Suggestion:new_selector() | 
| bsw@95 | 9 | 
| bsw@95 | 10 if id then | 
| bsw@95 | 11   suggestions_selector:add_where{"suggestion.id = ?", id} | 
| bsw@95 | 12 end | 
| bsw@95 | 13 | 
| bsw@95 | 14 if min_id then | 
| bsw@95 | 15   suggestions_selector:add_where{"suggestion.id >= ?", min_id} | 
| bsw@95 | 16 end | 
| bsw@95 | 17 | 
| bsw@95 | 18 if max_id then | 
| bsw@95 | 19   suggestions_selector:add_where{"suggestion.id <= ?", max_id} | 
| bsw@95 | 20 end | 
| bsw@95 | 21 | 
| poelzi@143 | 22 if initiative_id then | 
| poelzi@143 | 23   suggestions_selector:add_where{"suggestion.initiative_id = ?", initiative_id} | 
| poelzi@143 | 24 end | 
| poelzi@143 | 25 | 
| poelzi@161 | 26 if order == "created_desc" then | 
| poelzi@161 | 27   suggestions_selector:add_order_by("suggestion.created DESC") | 
| poelzi@161 | 28 elseif order == "created_asc" or order == "created" then | 
| poelzi@161 | 29   suggestions_selector:add_order_by("suggestion.id") | 
| poelzi@161 | 30 elseif order == "id_desc" then | 
| bsw@95 | 31   suggestions_selector:add_order_by("suggestion.id DESC") | 
| bsw@95 | 32 else | 
| bsw@95 | 33   suggestions_selector:add_order_by("suggestion.id") | 
| bsw@95 | 34 end | 
| bsw@95 | 35 | 
| bsw@95 | 36 if limit then | 
| bsw@95 | 37   suggestions_selector:limit(limit) | 
| bsw@95 | 38 end | 
| bsw@95 | 39 | 
| bsw@95 | 40 local api_engine = param.get("api_engine") or "xml" | 
| bsw@95 | 41 | 
| bsw@95 | 42 local fields = { | 
| bsw@95 | 43 | 
| bsw@95 | 44   { name = "id",                       field = "suggestion.id" }, | 
| bsw@95 | 45   { name = "initiative_id",            field = "suggestion.initiative_id" }, | 
| poelzi@161 | 46   { name = "created",                  field = "suggestion.created" }, | 
| poelzi@170 | 47 -- FIXME: private api | 
| poelzi@170 | 48 --  { name = "author_id",                field = "suggestion.author_id" }, | 
| bsw@95 | 49   { name = "name",                     field = "suggestion.name" }, | 
| bsw@95 | 50   { name = "description",              field = "suggestion.description" }, | 
| bsw@95 | 51   { name = "minus2_unfulfilled_count", field = "suggestion.minus2_unfulfilled_count" }, | 
| bsw@95 | 52   { name = "minus2_fulfilled_count",   field = "suggestion.minus2_fulfilled_count" }, | 
| bsw@95 | 53   { name = "minus1_unfulfilled_count", field = "suggestion.minus1_unfulfilled_count" }, | 
| bsw@95 | 54   { name = "minus1_fulfilled_count",   field = "suggestion.minus1_fulfilled_count" }, | 
| bsw@95 | 55   { name = "plus1_unfulfilled_count",  field = "suggestion.plus1_unfulfilled_count" }, | 
| bsw@95 | 56   { name = "plus1_fulfilled_count",    field = "suggestion.plus1_fulfilled_count" }, | 
| bsw@95 | 57   { name = "plus2_unfulfilled_count",  field = "suggestion.plus2_unfulfilled_count" }, | 
| bsw@95 | 58   { name = "plus2_fulfilled_count",    field = "suggestion.plus2_fulfilled_count" }, | 
| bsw@95 | 59 | 
| bsw@95 | 60 } | 
| bsw@95 | 61 | 
| bsw@95 | 62 util.autoapi{ | 
| bsw@95 | 63   relation_name = "suggestion", | 
| bsw@95 | 64   selector      = suggestions_selector, | 
| bsw@95 | 65   fields        = fields, | 
| bsw@95 | 66   api_engine    = api_engine | 
| bsw@95 | 67 } |