genome/dgi-db

View on GitHub
app/presenters/interaction_claim_presenter.rb

Summary

Maintainability
A
0 mins
Test Coverage
class InteractionClaimPresenter < SimpleDelegator
  def initialize(interaction_claim)
    @interaction_claim = interaction_claim
    super
  end

  def gene_claim
    @wrapped_gene_claim ||= GeneClaimPresenter.new(@interaction_claim.gene_claim)
  end

  def drug_claim
    @wrapped_drug_claim ||= DrugClaimPresenter.new(@interaction_claim.drug_claim)
  end

  def title
    @title ||= "#{drug_claim.title} interacting with #{gene_claim.title}"
  end

  def as_json
    {
      source: @interaction_claim.source.source_db_name,
      drug: drug_claim.drug_claim_name,
      gene: gene_claim.name,
      interaction_types: @interaction_claim.interaction_claim_types.map{|t| t.type},
      attributes: @interaction_claim.interaction_claim_attributes.map{|a| ClaimAttributePresenter.new(a).as_json},
      publications: @interaction_claim.publications.map(&:pmid),
      source_links: @interaction_claim.interaction_claim_links.map{|l| {url: l.link_url, text: l.link_text}  },
    }
  end
end