Sha256: f8f6e06c7d1c079b56c6f2f509230817784f05e3d2c7e32b9fad188d5b88dae1

Contents?: true

Size: 1.55 KB

Versions: 1

Compression:

Stored size: 1.55 KB

Contents

module ReactiveRecord
  # redefine if you want to process errors (i.e. logging, rollbar, etc)
  def self.on_fetch_error(e, params); end

  module Operations
    # fetch queued up records from the server
    # subclass of ControllerOp so we can pass the controller
    # along to on_fetch_error
    class Fetch < Hyperloop::ControllerOp
      param :acting_user, nils: true
      param models: []
      param associations: []
      param :pending_fetches
      step do
        ReactiveRecord::ServerDataCache[
          params.models.map(&:with_indifferent_access),
          params.associations.map(&:with_indifferent_access),
          params.pending_fetches,
          params.acting_user
        ]
      end
      failed do |e|
        ReactiveRecord.on_fetch_error(e, params.to_h)
        raise e
      end
    end

    class Save < Hyperloop::ServerOp
      param :acting_user, nils: true
      param models: []
      param associations: []
      param :validate, type: :boolean

      step do
        ReactiveRecord::Base.save_records(
          params.models.map(&:with_indifferent_access),
          params.associations.map(&:with_indifferent_access),
          params.acting_user,
          params.validate,
          true
        )
      end
    end

    class Destroy < Hyperloop::ServerOp
      param :acting_user, nils: true
      param :model
      param :id
      param :vector
      step do
        ReactiveRecord::Base.destroy_record(
          params.model,
          params.id,
          params.vector,
          params.acting_user
        )
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hyper-mesh-1.0.0.lap26 lib/reactive_record/active_record/reactive_record/operations.rb