filter maps by user_id in api

This commit is contained in:
Devin Howard 2016-10-29 11:46:18 +08:00
parent 6cc827d11c
commit 0530c9182a
3 changed files with 17 additions and 0 deletions

View file

@ -5,6 +5,11 @@ module Api
def searchable_columns
[:name, :desc]
end
def apply_filters(collection)
collection = collection.where(user_id: params[:user_id]) if params[:user_id]
collection
end
end
end
end

View file

@ -141,6 +141,7 @@ module Api
collection = accessible_records
collection = yield collection if block_given?
collection = search_by_q(collection) if params[:q]
collection = apply_filters(collection)
collection = order_by_sort(collection) if params[:sort]
collection = collection.page(params[:page]).per(params[:per])
self.collection = collection
@ -167,6 +168,11 @@ module Api
collection.where(condition)
end
def apply_filters(collection)
# override this function for specific filters
collection
end
def order_by_sort(collection)
builder = collection
sorts = params[:sort].split(',')

View file

@ -2,6 +2,12 @@
get:
is: [ searchable: { searchFields: "name, desc" }, embeddable: { embedFields: "user,topics,synapses,mappings,contributors,collaborators" }, orderable, pageable ]
securedBy: [ null, token, oauth_2_0, cookie ]
queryParameters:
user_id:
description: |
Pass a user_id to only return maps created by that user. For example, `/api/v2/maps?user_id=1` would return maps created by the Metamaps user with id 1.
required: false
type: number
responses:
200:
body: