jam-cloud/ruby/lib/jam_ruby/models/user_sync.rb

47 lines
1.3 KiB
Ruby
Raw Normal View History

module JamRuby
class UserSync < ActiveRecord::Base
belongs_to :recorded_track
belongs_to :mix
belongs_to :quick_mix
def self.show(id, user_id)
self.index({user_id: user_id, id: id, limit: 1, offset: 0})[:query].first
end
def self.index(params)
user_id = params[:user_id]
limit = params[:limit].to_i
limit = limit == 0 ? 20 : limit
offset = params[:offset].to_i
id = params[:id]
recording_id = params[:recording_id]
page = (offset / limit) + 1 # one-based madness
raise 'no user id specified' if user_id.blank?
query = UserSync.includes(recorded_track: [{recording: [:owner, {claimed_recordings: [:share_token]}, {recorded_tracks: [:user]}, {comments:[:user]}, :likes, :plays, :mixes]}, user: [], instrument:[]], mix: [], quick_mix:[]).where(user_id: user_id).paginate(:page => page, :per_page => limit).order('created_at DESC, unified_id')
# allow selection of single user_sync, by ID
unless id.blank?
query = query.where(unified_id: id)
end
unless recording_id.blank?
query = query.where(recording_id: recording_id)
end
if query.length == 0
{ query:query, next: nil}
elsif query.length < limit
{ query:query, next: nil}
else
{ query:query, next: offset + limit}
end
end
end
end