require 'friendly_id'

class SongRef < ActiveRecord::Base
	extend FriendlyId
  include Extensions::UUID  

  friendly_id :slug

	has_many :songs, :foreign_key => :song_ref_uuid, :primary_key => :uuid
	has_many :song_occurences, :foreign_key => :song_ref_uuid, :primary_key => :uuid
	has_many :shows, :through => :song_occurences, :foreign_key => :song_ref_uuid

  accepts_nested_attributes_for :song_occurences

  def self.create_from(spec)
    song_ref = SongRef.new
    set_spec(song_ref, spec)
    song_ref.save    
  end

  def self.update_from(spec) 
    song_ref = SongRef.find_by_uuid(spec[:uuid])
    set_spec(song_ref, spec)
    song_ref.save
  end
	
  def self.remove_from(spec)
    SongRef.find_by_uuid(spec[:uuid]).delete
  end

  private

  def self.set_spec(song_ref, spec)
    song_ref.uuid = spec[:uuid]
    song_ref.name = spec[:name]
    song_ref.slug = spec[:name].parameterize.underscore
    song_ref
  end
end