3scale/porta

View on GitHub
app/representers/cms/page_representer.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module CMS::PageRepresenter
  include ThreeScale::JSONRepresenter

  property :id
  property :type, getter: ->(*) { CMS::TypeMap.cms_type(self.class) }
  property :created_at
  property :updated_at
  property :title
  property :system_name, render_nil: true
  property :layout_id, render_nil: true

  with_options(if: ->(*) { is_a?(CMS::Page) }) do |p|
    p.property :section_id
    p.property :path, if: ->(*) { respond_to?(:path) }
    p.property :content_type
    p.property :liquid_enabled, getter: ->(*) { liquid_enabled? }
    p.property :handler
    p.property :hidden, getter: ->(*) { hidden? }
  end

  with_options(if: ->(options) { !options.dig(:user_options, :short) }) do
    property :draft, render_nil: true
    property :published, render_nil: true
  end
end