lib/table_sync/errors.rb in table_sync-2.3.0 vs lib/table_sync/errors.rb in table_sync-4.0.0

- old
+ new

@@ -2,41 +2,27 @@ module TableSync Error = Class.new(StandardError) class UpsertError < Error - def initialize(data:, target_keys:, version_key:, first_sync_time_key:, default_values:) - super <<~MSG - Upsert has changed more than 1 row; - data: #{data.inspect} - target_keys: #{target_keys.inspect} - version_key: #{version_key.inspect} - first_sync_time_key: #{first_sync_time_key.inspect} - default_values: #{default_values.inspect} - MSG + def initialize(data:, target_keys:, result:) + super("data: #{data.inspect}, target_keys: #{target_keys.inspect}, result: #{result.inspect}") end end - class UndefinedConfig < Error - def initialize(model) - super("Config not defined for model; model: #{model.inspect}") - end - end - class DestroyError < Error - def initialize(data) - super("Destroy has changed more than 1 row; data: #{data.inspect}") + def initialize(data:, target_keys:, result:) + super("data: #{data.inspect}, target_keys: #{target_keys.inspect}, result: #{result.inspect}") end end - class UnprovidedEventTargetKeysError < Error - # @param target_keys [Array<Symbol,String>] - # @param target_attributes [Hash<Symbol|String,Any>] - def initialize(target_keys, target_attributes) + class DataError < Error + def initialize(data, target_keys, description) super(<<~MSG.squish) - Some target keys not found in received attributes! - (Expects: #{target_keys}, Actual: #{target_attributes.keys}) + #{description} + target_keys: #{target_keys} + data: #{data} MSG end end # @api public @@ -56,8 +42,38 @@ # @since 2.2.0 class AlreadyRegisteredPluginError < PluginError # @param plugin_name [Any] def initialize(plugin_name) super("#{plugin_name} plugin already exists") + end + end + + class InterfaceError < Error + def initialize(object, method_name, parameters, description) + parameters = parameters.map do |parameter| + type, name = parameter + + case type + when :req + name.to_s + when :keyreq + "#{name}:" + when :block + "&#{name}" + end + end + + signature = "#{method_name}(#{parameters.join(", ")})" + + super("#{object} has to implement method `#{signature}`\n#{description}") + end + end + + UndefinedEvent = Class.new(Error) + ORMNotSupported = Class.new(Error) + + class WrongOptionValue < Error + def initialize(model, option, value) + super("TableSync config for #{model.inspect} can't contain #{value.inspect} as #{option}") end end end