Sha256: 2fc36aae1f94c7ff83d4042de0dc35a9817da129148ccbac35afcbd923ea44a8

Contents?: true

Size: 1019 Bytes

Versions: 4

Compression:

Stored size: 1019 Bytes

Contents

# frozen_string_literal: true

require_relative '../operation'

module LedgerSync
  module Domains
    class Operation
      class Update
        include LedgerSync::Domains::Operation::Mixin

        private

        def operate
          return failure('Resource not found') unless resource

          if resource.update(params.except(:id))
            success
          else
            failure(
              'Please review the problems below:',
              data: serialize(resource: resource)
            )
          end
        end

        def resource
          @resource ||= resource_class.find_by(id: params[:id])
        end

        def success
          super(
            serialize(resource: resource)
          )
        end

        def failure(message, data: nil)
          super(
              LedgerSync::Error::OperationError.new(
                operation: self,
                message: message,
                response: data
              )
          )
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ledger_sync-domains-1.0.0.rc4 lib/ledger_sync/domains/operation/update.rb
ledger_sync-domains-1.0.0.rc3 lib/ledger_sync/domains/operation/update.rb
ledger_sync-domains-1.0.0.rc2 lib/ledger_sync/domains/operation/update.rb
ledger_sync-domains-1.0.0.rc1 lib/ledger_sync/domains/operation/update.rb