Sha256: 83227c0cea98ed0dc6ab848044e3bb11e1bfd44077a41d0b5be323b19405cab1

Contents?: true

Size: 980 Bytes

Versions: 8

Compression:

Stored size: 980 Bytes

Contents

# frozen_string_literal: true
require "mobility/backends/sequel/pg_query_methods"
require "mobility/backends/sequel/query_methods"

Sequel.extension :pg_json, :pg_json_ops

module Mobility
  module Backends
    module Sequel
      class Container::JsonbQueryMethods < QueryMethods
        include PgQueryMethods
        attr_reader :column_name

        def initialize(attributes, options)
          super
          @column_name = options[:column_name]
          define_query_methods
        end

        def matches(key, locale)
          build_op(column_name)[locale][key.to_s]
        end

        def exists(key, locale)
          build_op(column_name).has_key?(locale) & build_op(column_name)[locale].has_key?(key.to_s)
        end

        def quote(value)
          value && value.to_json
        end

        private

        def build_op(key)
          ::Sequel.pg_jsonb_op(key)
        end
      end
      Container.private_constant :JsonbQueryMethods
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
mobility-0.7.6 lib/mobility/backends/sequel/container/jsonb_query_methods.rb
mobility-0.7.5 lib/mobility/backends/sequel/container/jsonb_query_methods.rb
mobility-0.7.4 lib/mobility/backends/sequel/container/jsonb_query_methods.rb
mobility-0.7.3 lib/mobility/backends/sequel/container/jsonb_query_methods.rb
mobility-0.7.2 lib/mobility/backends/sequel/container/jsonb_query_methods.rb
mobility-0.7.1 lib/mobility/backends/sequel/container/jsonb_query_methods.rb
mobility-0.7.0 lib/mobility/backends/sequel/container/jsonb_query_methods.rb
mobility-0.6.0 lib/mobility/backends/sequel/container/jsonb_query_methods.rb