all files / couch/couch/database/ mango.js

23.08% Statements 3/13
0% Branches 0/2
25% Functions 2/8
23.08% Lines 3/13
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83                                                                                                                                                               
import Ember from 'ember';
 
const {
  merge,
  Logger: { warn }
} = Ember;
 
export default Ember.Object.extend({
 
  database: null,
 
  request(opts) {
    return this.get('database').request(opts);
  },
 
  reportWarning(warning, opts) {
    warn(`_find:`, warning, opts);
  },
 
  _query(url, opts) {
    opts = merge({}, opts);
    return this.request({
      method: 'post',
      url: url,
      json: true,
      body: {
        selector:  opts.selector,
        limit:     opts.limit,
        skip:      opts.skip,
        sort:      opts.sort,
        fields:    opts.fields,
        use_index: opts.use_index
      }
    }).then(results => {
      if(results.warning) {
        this.reportWarning(results.warning, opts);
      }
      return results;
    });
  },
 
  find(opts) {
    return this._query('_find', opts);
  },
 
  explain(opts) {
    return this._query('_explain', opts);
  },
 
  //
 
  save(ddoc, name, index) {
    return this.request({
      method: 'post',
      url: '_index',
      json: true,
      body: {
        ddoc,
        name,
        index
      }
    });
  },
 
  all() {
    return this.request({
      method: 'get',
      url: '_index',
      json: true
    });
  },
 
  delete(ddoc, name) {
    return this.request({
      method: 'delete',
      url: `_index/${ddoc}/json/${name}`,
      json: true
    });
  }
 
});