bsw@95: local id = param.get("id") bsw@95: local min_id = param.get("min_id") bsw@95: local max_id = param.get("max_id") bsw@95: local initiative_id = param.get("initiative_id") bsw@95: local order = param.get("order") bsw@95: local limit = param.get("limit", atom.integer) bsw@95: bsw@95: local suggestions_selector = Suggestion:new_selector() bsw@95: bsw@95: if id then bsw@95: suggestions_selector:add_where{"suggestion.id = ?", id} bsw@95: end bsw@95: bsw@95: if min_id then bsw@95: suggestions_selector:add_where{"suggestion.id >= ?", min_id} bsw@95: end bsw@95: bsw@95: if max_id then bsw@95: suggestions_selector:add_where{"suggestion.id <= ?", max_id} bsw@95: end bsw@95: poelzi@143: if initiative_id then poelzi@143: suggestions_selector:add_where{"suggestion.initiative_id = ?", initiative_id} poelzi@143: end poelzi@143: poelzi@161: if order == "created_desc" then poelzi@161: suggestions_selector:add_order_by("suggestion.created DESC") poelzi@161: elseif order == "created_asc" or order == "created" then poelzi@161: suggestions_selector:add_order_by("suggestion.id") poelzi@161: elseif order == "id_desc" then bsw@95: suggestions_selector:add_order_by("suggestion.id DESC") bsw@95: else bsw@95: suggestions_selector:add_order_by("suggestion.id") bsw@95: end bsw@95: bsw@95: if limit then bsw@95: suggestions_selector:limit(limit) bsw@95: end bsw@95: bsw@95: local api_engine = param.get("api_engine") or "xml" bsw@95: bsw@95: local fields = { bsw@95: bsw@95: { name = "id", field = "suggestion.id" }, bsw@95: { name = "initiative_id", field = "suggestion.initiative_id" }, poelzi@161: { name = "created", field = "suggestion.created" }, poelzi@170: -- FIXME: private api poelzi@170: -- { name = "author_id", field = "suggestion.author_id" }, bsw@95: { name = "name", field = "suggestion.name" }, bsw@95: { name = "description", field = "suggestion.description" }, bsw@95: { name = "minus2_unfulfilled_count", field = "suggestion.minus2_unfulfilled_count" }, bsw@95: { name = "minus2_fulfilled_count", field = "suggestion.minus2_fulfilled_count" }, bsw@95: { name = "minus1_unfulfilled_count", field = "suggestion.minus1_unfulfilled_count" }, bsw@95: { name = "minus1_fulfilled_count", field = "suggestion.minus1_fulfilled_count" }, bsw@95: { name = "plus1_unfulfilled_count", field = "suggestion.plus1_unfulfilled_count" }, bsw@95: { name = "plus1_fulfilled_count", field = "suggestion.plus1_fulfilled_count" }, bsw@95: { name = "plus2_unfulfilled_count", field = "suggestion.plus2_unfulfilled_count" }, bsw@95: { name = "plus2_fulfilled_count", field = "suggestion.plus2_fulfilled_count" }, bsw@95: bsw@95: } bsw@95: bsw@95: util.autoapi{ bsw@95: relation_name = "suggestion", bsw@95: selector = suggestions_selector, bsw@95: fields = fields, bsw@95: api_engine = api_engine bsw@95: }