Sha256: a09d98da9587d4b41763f13168a4b922f857e2bd7d35b62ac538c738d4ac1599

Contents?: true

Size: 1.59 KB

Versions: 9

Compression:

Stored size: 1.59 KB

Contents

module RailsConnector

class WorkspaceDataFromService
  # Fetches a workspace data previously store in cache storage.
  # Returns nil if not found.
  def self.find_from_cache(id)
    if data = CmsCacheStorage.read_workspace_data(id)
      new(data)
    end
  end

  def initialize(data)
    @data = data
  end

  def revision_id
    @data["revision_id"]
  end

  def id
    @data["id"]
  end

  def title
    @data["title"]
  end

  # remove this method after DynamoCmsBackend has been removed from the Cloud Connector
  def content_cache_id=(id)
    # ignore, since not using content caches
  end

  def content_state_id
    @data['content_state_id']
  end

  def content_state
    @content_state ||= ContentState.find_or_create(content_state_id) if content_state_id
  end

  def diff
    @data['diff']
  end

  def changes
    diff && diff['changes']
  end

  def from_content_state_id
    diff && diff['from_content_state_id']
  end

  def to_content_state_id
    diff && diff['to_content_state_id']
  end

  # Serializes and stores a workspace data in cache storage.
  # Also creates an appropriate content state if needed.
  def store_in_cache
    create_content_state if content_state_id
    CmsCacheStorage.write_workspace_data(id, to_hash)
  end

  private

  def to_hash
    {
      'id' => id,
      'revision_id' => revision_id,
      'title' => title,
      'content_state_id' => content_state_id,
    }
  end

  def create_content_state
    ContentState.create(content_state_id: to_content_state_id, changes: changes,
        from_content_state_id: from_content_state_id)
  end
end

end # module RailsConnector

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
infopark_cloud_connector-7.0.2 lib/rails_connector/workspace_data_from_service.rb
infopark_cloud_connector-7.0.1 lib/rails_connector/workspace_data_from_service.rb
infopark_cloud_connector-7.0.0 lib/rails_connector/workspace_data_from_service.rb
infopark_cloud_connector-6.9.5 lib/rails_connector/workspace_data_from_service.rb
infopark_cloud_connector-6.9.4 lib/rails_connector/workspace_data_from_service.rb
infopark_cloud_connector-6.9.3.1.36404185 lib/rails_connector/workspace_data_from_service.rb
infopark_cloud_connector-6.9.2.1.125136549 lib/rails_connector/workspace_data_from_service.rb
infopark_cloud_connector-6.9.1.3.22208381 lib/rails_connector/workspace_data_from_service.rb
infopark_cloud_connector-6.9.0.3.197272233 lib/rails_connector/workspace_data_from_service.rb