Sha256: 6ab077da7f1b896bc85610b22a81c30f8465e6a075c152d96acefdca0351353e

Contents?: true

Size: 1.79 KB

Versions: 5

Compression:

Stored size: 1.79 KB

Contents

module RailsConnector
  module Migrations
    class CmsBackend
      def read
        obj = find_migration_store_obj

        if obj
          obj[attribute_name]
        else
          initial_value
        end
      end

      def save(value)
        CmsRestApi.put(
          endpoint("objs/#{migration_store_obj.id}"),
          :obj => {
            attribute_name => value
          }
        )
      end

      private

      def create
        # Create obj class
        CmsRestApi.post(
          endpoint('obj_classes'),
          :obj_class => {
            :name => obj_class_name,
            :attributes => [
              {
                :name => attribute_name,
                :type => :text,
              },
            ],
            :type => :publication,
            :title => obj_class_name,
          }
        )

        # Create obj
        CmsRestApi.post(
          endpoint('objs'),
          :obj => {
            :_path => path,
            :_obj_class => obj_class_name,
            attribute_name => initial_value,
          }
        )

        # Deactivate obj class
        CmsRestApi.put(
          endpoint("obj_classes/#{obj_class_name}"),
          :obj_class => {
            :is_active => false,
          }
        )
      end

      def migration_store_obj
        unless find_migration_store_obj
          create
        end

        find_migration_store_obj
      end

      def find_migration_store_obj
        Obj.find_by_path(path)
      end

      def attribute_name
        'versions'
      end

      def obj_class_name
        'MigrationStore'
      end

      def path
        '/_internal/migration-store'
      end

      def initial_value
        ''
      end

      def endpoint(path)
        "revisions/#{Workspace.current.revision_id}/#{path}"
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
infopark_cloud_connector-6.9.5 lib/rails_connector/migrations/cms_backend.rb
infopark_cloud_connector-6.9.4 lib/rails_connector/migrations/cms_backend.rb
infopark_cloud_connector-6.9.3.1.36404185 lib/rails_connector/migrations/cms_backend.rb
infopark_cloud_connector-6.9.2.1.125136549 lib/rails_connector/migrations/cms_backend.rb
infopark_cloud_connector-6.9.1.3.22208381 lib/rails_connector/migrations/cms_backend.rb