1
0
Fork 0
musicbrainz/lib/musicbrainz/models/release_group.rb

43 lines
1.1 KiB
Ruby
Raw Normal View History

2012-10-12 12:45:51 +00:00
module MusicBrainz
2013-01-20 12:36:52 +00:00
class ReleaseGroup < BaseModel
2012-10-12 12:45:51 +00:00
field :id, String
field :type, String
field :title, String
field :desc, String
2013-01-20 12:36:52 +00:00
field :first_release_date, Date
2013-02-06 13:07:20 +00:00
field :urls, Hash
2012-10-12 12:45:51 +00:00
alias_method :disambiguation, :desc
def releases
2013-01-24 20:12:58 +00:00
@releases ||= client.load(:release, { release_group: id, inc: [:media, :release_groups], limit: 100 }, {
2013-01-20 12:36:52 +00:00
binding: :release_group_releases,
create_models: :release,
2012-10-12 12:45:51 +00:00
sort: :date
}) unless @id.nil?
end
class << self
def find(id)
2013-02-06 13:07:20 +00:00
client.load(:release_group, { id: id, inc: [:url_rels] }, {
2013-01-20 12:36:52 +00:00
binding: :release_group,
create_model: :release_group
2012-10-12 12:45:51 +00:00
})
end
def search(artist_name, title, type = nil)
if type
super({artist: artist_name, releasegroup: title, type: type})
else
super({artist: artist_name, releasegroup: title})
end
end
def find_by_artist_and_title(artist_name, title, type = nil )
matches = search(artist_name, title, type)
matches.empty? ? nil : find(matches.first[:id])
end
2012-10-12 12:45:51 +00:00
end
end
end