• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1(function() {
2  function errorHandler(error, callback) {
3    if (error) {
4      callback && callback(error);
5      throw error;
6    }
7  }
8
9  function pageview(_AV  ,options) {
10    var AV = _AV;
11    var appId, appKey, appClass;
12    appId = options.appId;
13    appKey = options.appKey;
14    appClass = options.appClass;
15    AV.init({
16      appId: appId,
17      appKey: appKey
18    });
19    return {
20      get: get,
21      increase: increase
22    };
23
24    function searchKey(key) {
25      var query = new AV.Query(appClass);
26      query.equalTo('key', key);
27      return query.first();
28    }
29
30    function insert(key, title) {
31      var Blog = AV.Object.extend(appClass);
32      var blog = new Blog();
33      blog.set('title', title);
34      blog.set('key', key);
35      blog.set('views', 0);
36      return blog.save();
37    }
38
39    function increment(result) {
40      result.increment('views', 1);
41      return result.save(null, {
42        fetchWhenSave: true
43      });
44    }
45
46    function get(key, callback) {
47      searchKey(key).then(function(result) {
48        if (result) {
49          callback && callback(result.attributes.views);
50        }
51      }, errorHandler);
52    }
53
54    function increase(key, title, callback) {
55      searchKey(key).then(function(result) {
56        if (result) {
57          increment(result).then(function(result) {
58            callback && callback(result.attributes.views);
59          });
60        } else {
61          insert(key, title).then(function(result) {
62            increment(result).then(function(result) {
63              callback && callback(result.attributes.views);
64            });
65          }, errorHandler);
66        }
67      }, errorHandler);
68    }
69  }
70  window.pageview = pageview;
71})();