Sha256: 1ca8243ce23e2a9a50c56992a6eef32e2dcbf8a4f1885364bdff8ca6c96fb28f

Contents?: true

Size: 863 Bytes

Versions: 7

Compression:

Stored size: 863 Bytes

Contents

# frozen_string_literal: true

require 'forwardable'

module DynamoidAdvancedWhere
  module Nodes
    module Concerns
      module Negatable
        def negate
          NotNode.new(sub_node: self)
        end
        alias ! negate
      end
    end

    # I know this is weird but it prevents a circular dependency
    require_relative './and_node'
    require_relative './or_node'

    class NotNode
      extend Forwardable
      include Concerns::SupportsLogicalAnd
      include Concerns::SupportsLogicalOr

      attr_accessor :sub_node

      def_delegators :@sub_node,
                     :expression_attribute_names,
                     :expression_attribute_values

      def initialize(sub_node:)
        self.sub_node = sub_node
        freeze
      end

      def to_expression
        "NOT(#{sub_node.to_expression})"
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
dynamoid_advanced_where-1.8.0 lib/dynamoid_advanced_where/nodes/not.rb
dynamoid_advanced_where-1.7.1 lib/dynamoid_advanced_where/nodes/not.rb
dynamoid_advanced_where-1.7.0 lib/dynamoid_advanced_where/nodes/not.rb
dynamoid_advanced_where-1.6.0 lib/dynamoid_advanced_where/nodes/not.rb
dynamoid_advanced_where-1.5.1 lib/dynamoid_advanced_where/nodes/not.rb
dynamoid_advanced_where-1.5.0 lib/dynamoid_advanced_where/nodes/not.rb
dynamoid_advanced_where-1.4.0 lib/dynamoid_advanced_where/nodes/not.rb