dojo/store/Cache.js

  • Provides:

    • dojo.store.Cache
  • dojo.store.__CacheArgs

    • type
      Function
    • source: [view]
        this.isLoaded = isLoaded;
    • summary
      These are additional options for how caching is handled.
  • dojo.store.__CacheArgs.isLoaded

    • type
      Function?
    • summary
      This is a function that will be called for each item in a query response to determine
      if it is cacheable. If isLoaded returns true, the item will be cached, otherwise it
      will not be cached. If isLoaded is not provided, all items will be cached.
  • dojo.store.Cache

    • type
      Function
    • example
      
      	var master = new dojo.store.Memory(data);
      	var cacher = new dojo.store.Memory();
      	var store = new dojo.store.Cache(master, cacher);
    • parameters:
      • masterStore: (typeof This)
        is the authoritative store, all uncached requests or non-safe requests will
        be made against this store.
      • cachingStore: (typeof This)
        is the caching store that will be used to store responses for quick access.
        Typically this should be a local store.
      • options: (typeof dojo.store.__CacheArgs)
        These are additional options for how caching is handled.
    • source: [view]
       options = options || {};
       return dojo.delegate(masterStore, {
        query: function(query, directives){
         var results = masterStore.query(query, directives);
         results.forEach(function(object){
          if(!options.isLoaded || options.isLoaded(object)){
           cachingStore.put(object);
          }
         });
         return results;
        },
        // look for a queryEngine in either store
        queryEngine: masterStore.queryEngine || cachingStore.queryEngine,
        get: function(id, directives){
         return dojo.when(cachingStore.get(id), function(result){
          return result || dojo.when(masterStore.get(id, directives), function(result){
           if(result){
            cachingStore.put(result, {id: id});
           }
           return result;
          });
         });
        },
        add: function(object, directives){
      return dojo.when(masterStore.add(object, directives), function(result){
       // now put result in cache
      return cachingStore.add(typeof result == "object" ? result : object, directives);
      });
      },
        put: function(object, directives){
         // first remove from the cache, so it is empty until we get a response from the master store
      cachingStore.remove((directives && directives.id) || this.getIdentity(object));
      return dojo.when(masterStore.put(object, directives), function(result){
       // now put result in cache
      return cachingStore.put(typeof result == "object" ? result : object, directives);
      });
      },
        remove: function(id, directives){
      return dojo.when(masterStore.remove(id, directives), function(result){
      return cachingStore.remove(id, directives);
      });
      },
        evict: function(id){
         return cachingStore.remove(id);
        }
       });
    • summary
      The Cache store wrapper takes a master store and a caching store,
      caches data from the master into the caching store for faster
      lookup. Normally one would use a memory store for the caching
      store and a server store like JsonRest for the master store.
  • dojo.store.Cache.query

    • type
      Function
    • parameters:
      • query: (typeof Object|String)
        The object or string containing query information. Dependent on the query engine used.
      • directives: (typeof dojo.store.util.SimpleQueryEngine.__queryOptions)
        An optional keyword arguments object with additional parameters describing the query.
    • source: [view]
        // summary:
        //  Query the underlying master store and cache any results.
        // query: Object|String
        //  The object or string containing query information. Dependent on the query engine used.
        // directives: dojo.store.util.SimpleQueryEngine.__queryOptions?
        //  An optional keyword arguments object with additional parameters describing the query.
        // returns: dojo.store.util.QueryResults
        //  A QueryResults object that can be used to iterate over.
    • summary
      Query the underlying master store and cache any results.
    • return_summary
      dojo.store.util.QueryResults
      A QueryResults object that can be used to iterate over.
  • dojo.store.Cache.get

    • type
      Function
    • parameters:
      • id: (typeof Number)
        The identifier for the object in question.
      • directives: (typeof dojo.store.__GetOptions)
        Any additional parameters needed to describe how the get should be performed.
    • source: [view]
        // summary:
        //  Get the object with the specific id.
        // id: Number
        //  The identifier for the object in question.
        // directives: dojo.store.__GetOptions?
        //  Any additional parameters needed to describe how the get should be performed.
        // returns: dojo.store.util.QueryResults
        //  A QueryResults object.
    • summary
      Get the object with the specific id.
    • return_summary
      dojo.store.util.QueryResults
      A QueryResults object.
  • dojo.store.Cache.add

    • type
      Function
    • parameters:
      • object: (typeof Object)
        The object to add to the store.
      • directives: (typeof dojo.store.__AddOptions)
        Any additional parameters needed to describe how the add should be performed.
    • source: [view]
        // summary:
        //  Add the given object to the store.
        // object: Object
        //  The object to add to the store.
        // directives: dojo.store.__AddOptions?
        //  Any additional parameters needed to describe how the add should be performed.
        // returns: Number
        //  The new id for the object.
    • summary
      Add the given object to the store.
    • return_summary
      Number
      The new id for the object.
  • dojo.store.Cache.put

    • type
      Function
    • parameters:
      • object: (typeof Object)
        The object to put to the store.
      • directives: (typeof dojo.store.__PutOptions)
        Any additional parameters needed to describe how the put should be performed.
    • source: [view]
        // summary:
        //  Put the object into the store (similar to an HTTP PUT).
        // object: Object
        //  The object to put to the store.
        // directives: dojo.store.__PutOptions?
        //  Any additional parameters needed to describe how the put should be performed.
        // returns: Number
        //  The new id for the object.
    • summary
      Put the object into the store (similar to an HTTP PUT).
    • return_summary
      Number
      The new id for the object.
  • dojo.store.Cache.remove

    • type
      Function
    • parameters:
      • id: (typeof Number)
        The identifier for the object in question.
      • directives: (typeof dojo.store.__RemoveOptions)
        Any additional parameters needed to describe how the remove should be performed.
    • source: [view]
        // summary:
        //  Remove the object with the specific id.
        // id: Number
        //  The identifier for the object in question.
        // directives: dojo.store.__RemoveOptions?
        //  Any additional parameters needed to describe how the remove should be performed.
    • summary
      Remove the object with the specific id.
  • dojo.store.Cache.evict

    • type
      Function
    • parameters:
      • id: (typeof Number)
        The identifier for the object in question.
    • source: [view]
        // summary:
        //  Remove the object with the given id from the underlying caching store.
        // id: Number
        //  The identifier for the object in question.
    • summary
      Remove the object with the given id from the underlying caching store.
  • dojo.store

    • type
      Object
    • summary
  • dojo

    • type
      Object
    • summary