module Qwaiter::WaiterBaseSerializer
  extend ActiveSupport::Concern
  include JSONAPI::Serializer
  included do
    class_attribute :related_link_for_attributes
    timestamp_attribute :created_at
    timestamp_attribute :updated_at
  end

  def base_url
    nil
  end

  def format_name(attribute_name)
    attribute_name.to_s.dasherize
  end

  def unformat_name(attribute_name)
    attribute_name.to_s.underscore
  end

  #alias_method :default_relationship_related_link, :relationship_related_link
  def relationship_related_link(attribute_name)
    #super if related_link_for_attributes.include?(attribute_name)
    super
  end


  def relationship_self_link(attribute_name)
  end

  module ClassMethods
    def attributes(*attrs)
      attrs.each do |attr|
        attribute attr
      end
    end

    def timestamp_attribute(attr)
      attribute attr do
        return unless timestamp = object.public_send(attr)
        timestamp.iso8601
      end
    end

    def related_link_for(*attributes)
      self.related_link_for_attributes = attributes
    end
  end
end
