MotionModel icon indicating copy to clipboard operation
MotionModel copied to clipboard

Alternative adapters?

Open cbetta opened this issue 10 years ago • 3 comments
trafficstars

Is there a list of alternative adapters anywhere? MotionModel::ArrayModelAdapter is a nice starting point but a bit useless beyond initial experiments.

cbetta avatar Mar 12 '15 10:03 cbetta

There is the SQL branch, which uses FMDB as a backing store. I've not used it because my needs are more for a backing store with some data manipulation capability instead of a major database search/sort kind of thing. I've also done some strawman integrations with Meteor DDP and with Firebase, but the code is preliminary. What is the use case that makes ArrayModelAdapter insufficient to the task?

sxross avatar Mar 12 '15 17:03 sxross

Well I can load my data and then display it, but when the app gets killed in the background I want to have some data ready cached.

cbetta avatar Mar 12 '15 18:03 cbetta

I simply set an observer on the MotionModelDataDidChange notification and persist the data store. This is not so expensive that the user ever notices the delay in my experience. Here's a snippet of code I keep in AppDelegate:

  ################ Persistence Is Handled in Asynchronous Queue #################
  def observe_change
    @model_change_observer = App.notification_center.observe MotionModelDataDidChangeNotification do |notification|
      queue = Dispatch::Queue.concurrent('com.calicowebdev.whos_here.task')
      queue.async{
        begin
          save_one(notification.object.class)
        rescue MotionModel::PersistFileError => ex
          App.notification_center.post MotionModelPersistFileError, Time.now,
                                            {:status => 'failure', :exception => ex.message}
        end
        file_sizes
      }
    end
  end

I have a slightly more elegant version that creates a block that observes a given model, but this should give you an idea how I set it up. It will persist changes across settings every time you save/update/delete a collection.

sxross avatar Mar 12 '15 18:03 sxross