# frozen_string_literal: true # encoding: utf-8 # Copyright (C) 2020 MongoDB Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. module Mongo class Error # Raised if an unsupported option is specified for an operation. class UnsupportedOption < Error # The error message provided when the user passes the hint option to # a write operation against a server that does not support the hint # option and does not provide option validation. # # @api private HINT_MESSAGE = "The MongoDB server handling this request does not support " \ "the hint option on this command. The hint option is supported on update " \ "commands on MongoDB server versions 4.2 and later and on findAndModify " \ "and delete commands on MongoDB server versions 4.4 and later" # The error message provided when the user passes the hint option to # an unacknowledged write operation. # # @api private UNACKNOWLEDGED_HINT_MESSAGE = "The hint option cannot be specified on " \ "an unacknowledged write operation. Remove the hint option or perform " \ "this operation with a write concern of at least { w: 1 }" # The error message provided when the user passes the allow_disk_use # option to a find operation against a server that does not support the # allow_disk_use operation and does not provide option validation. # # @api private ALLOW_DISK_USE_MESSAGE = "The MongoDB server handling this request does " \ "not support the allow_disk_use option on this command. The " \ "allow_disk_use option is supported on find commands on MongoDB " \ "server versions 4.4 and later" # The error message provided when the user passes the commit_quorum option # to a createIndexes operation against a server that does not support # that option. # # @api private COMMIT_QUORUM_MESSAGE = "The MongoDB server handling this request does " \ "not support the commit_quorum option on this command. The commit_quorum " \ "option is supported on createIndexes commands on MongoDB server versions " \ "4.4 and later" # Raise an error about an unsupported hint option. # # @option options [ Boolean ] unacknowledged_write Whether this error # pertains to a hint option passed to an unacknowledged write. Defaults # to false. # # @return [ Mongo::Error::UnsupportedOption ] An error with a default # error message. # # @api private def self.hint_error(**options) unacknowledged_write = options[:unacknowledged_write] || false error_message = if unacknowledged_write UNACKNOWLEDGED_HINT_MESSAGE else HINT_MESSAGE end new(error_message) end # Raise an error about an unsupported allow_disk_use option. # # @return [ Mongo::Error::UnsupportedOption ] An error with a default # error message. # # @api private def self.allow_disk_use_error new(ALLOW_DISK_USE_MESSAGE) end # Raise an error about an unsupported commit_quorum option. # # @return [ Mongo::Error::UnsupportedOption ] An error with a default # error message. # # @api private def self.commit_quorum_error new(COMMIT_QUORUM_MESSAGE) end end end end