Sha256: f89fd08617d40249fb637ce99f5a0b14c51a5089afec68b141d574117feb6618

Contents?: true

Size: 1.4 KB

Versions: 22

Compression:

Stored size: 1.4 KB

Contents

module Pageflow
  module EntryExportImport
    # Turn revision into JSON compatible data structure.
    module RevisionSerialization
      extend self

      SERIALIZE_OPTIONS = {
        except: [:entry_id, :creator_id],
        include: {
          widgets: {
            except: [:subject_id, :subject_type]
          },
          storylines: {
            except: :revision_id,
            include: {
              chapters: {
                except: :storyline_id,
                include: {
                  pages: {
                    except: :chapter_id
                  }
                }
              }
            }
          },
          file_usages: {
            except: [:revision_id],
            include: {
              file: {
                except: [:entry_id, :job_id]
              }
            }
          }
        }
      }.freeze

      def dump(revision)
        revision
          .as_json(SERIALIZE_OPTIONS)
          .merge('components' => serialize_revision_components(revision))
      end

      def import(data, options)
        Import.new(options).perform(data)
      end

      private

      def serialize_revision_components(revision)
        revision.find_revision_components.map do |revision_component|
          revision_component
            .attributes.except('revision_id')
            .merge('class_name' => revision_component.class.name)
        end
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
pageflow-15.4.0 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.3.0 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.2.2 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.2.1 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.2.0 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.1.2 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.1.1 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.1.0 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.1.0.rc0 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.1.0.beta6 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.1.0.beta5 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.1.0.beta4 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.1.0.beta3 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.1.0.beta2 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.1.0.beta1 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.0.2 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.0.1 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.0.0 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.0.0.rc2 lib/pageflow/entry_export_import/revision_serialization.rb
pageflow-15.0.0.rc1 lib/pageflow/entry_export_import/revision_serialization.rb