Sha256: f39b3d31d399b32cc49b6801795c07e223962644ec66d8cea093815c92df7b61

Contents?: true

Size: 1.41 KB

Versions: 16

Compression:

Stored size: 1.41 KB

Contents

require "kvom"

module RailsConnector

  # This is the abstract class from which all CMS models derive.
  class CmsBaseModel < Kvom::Model::Base
    class << self
      def instance_name=(ignore)
        # this method is here only for compatibility with the fiona connector.
      end

      def adapter
        @@cms_database_adapter
      end

      def configure_database(connection_spec)
        @@cms_database_adapter =
            case connection_spec["type"]
            when "dynamo"
              Kvom::Adapter::DynamodbAdapter.new(connection_spec)
            when "file"
              Kvom::Adapter::FilesystemAdapter.new(connection_spec)
            else
              raise "Unexpected database type #{connection_spec["type"]}"
            end
      end

      def query_index(model, index, params = {})
        hash_value = "#{model}/#{index}/#{params[:hash_value]}"
        range_value = params[:range_value] || ""

        # up to this point: backend independent

        # this may be backend dependent (suffix character)
        start_key, end_key =
            case range_value
            when Range
              [range_value.begin, range_value.end]
            else
              [range_value, range_value]
            end
        range_value = Range.new(start_key, end_key + "~")

        adapter.query(hash_value, range_value)
      end

    end

    def save
      raise "CmsBaseModel is read-only"
    end

  end

end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
infopark_cloud_connector-6.8.2.36.82613853 lib/rails_connector/cms_base_model.rb
infopark_cloud_connector-6.8.2.7.128454143 lib/rails_connector/cms_base_model.rb
infopark_cloud_connector-6.8.1.26.236500544 lib/rails_connector/cms_base_model.rb
infopark_cloud_connector-6.8.1 lib/rails_connector/cms_base_model.rb
infopark_cloud_connector-6.8.0.539.93842523 lib/rails_connector/cms_base_model.rb
infopark_cloud_connector-6.8.0.529.114081979 lib/rails_connector/cms_base_model.rb
infopark_cloud_connector-6.8.0.518.30999728 lib/rails_connector/cms_base_model.rb
infopark_cloud_connector-6.8.0.515.34928522 lib/rails_connector/cms_base_model.rb
infopark_cloud_connector-6.8.0.498.46559598 lib/rails_connector/cms_base_model.rb
infopark_cloud_connector-6.8.0.480.261594408 lib/rails_connector/cms_base_model.rb
infopark_cloud_connector-6.8.0.444.171626367 lib/rails_connector/cms_base_model.rb
infopark_cloud_connector-6.8.0.406.131718077 lib/rails_connector/cms_base_model.rb
infopark_cloud_connector-6.8.0.356.19698103 lib/rails_connector/cms_base_model.rb
infopark_cloud_connector-6.8.0.348.160665197 lib/rails_connector/cms_base_model.rb
infopark_cloud_connector-6.8.0.328.4a753fc lib/rails_connector/cms_base_model.rb
infopark_cloud_connector-6.8.0.322.c003f11 lib/rails_connector/cms_base_model.rb