cms/app-client/app/mirage/config.js
author ymh <ymh.work@gmail.com>
Tue, 23 Feb 2016 17:47:57 +0100
changeset 127 5cd8c3065c38
parent 126 e87a340711a4
child 134 c06d08c8a1b8
permissions -rw-r--r--
extract common functionalities to common module. First application to lexvo name resolving
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
126
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
import ENV from 'app-client/config/environment';
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
import _ from 'lodash/lodash';
127
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
     3
import * as constants from 'corpus-common-addon/utils/constants';
126
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
export default function() {
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
  // These comments are here to help you get started. Feel free to delete them.
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
  /*
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
    Config (with defaults).
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
    Note: these only affect routes defined *after* them!
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
  */
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
  // this.urlPrefix = '';    // make this `http://localhost:8080`, for example, if your API is on a different server
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
  // this.namespace = '';    // make this `api`, for example, if your API is namespaced
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
  this.namespace = ENV.baseURL.replace(/\/$/,"")+'/api/v1';
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
  // this.timing = 400;      // delay for each request, automatically set to 0 during testing
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
  this.get('/documents');
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
  this.get('/documents/:id', function(db, request) {
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
    var docId = decodeURIComponent(request.params.id);
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
    return {
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
      'document': db.documents.find(docId)
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
    };
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
  });
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
  this.get('/languages', function(db) {
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
    var res = {};
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
    _.each(db.languages, function(lang) {
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
      res[lang.id] = lang.count;
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
    });
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
    return res;
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
  });
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
127
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    36
  this.get('/lexvo/:ids', function(db, request) {
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    37
    var langIds = decodeURIComponent(request.params.ids);
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    38
    var resMap = _.reduce(langIds.split(','), function(res, id) {
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    39
        var fullId = id;
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    40
        if(!_.startsWith(fullId, constants.LEXVO_BASE_URL)) {
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    41
          fullId = constants.LEXVO_BASE_URL + id;
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    42
        }
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    43
        var lexvoRes = db.lexvo.find(fullId);
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    44
        res[id] = lexvoRes?lexvoRes.name:null;
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    45
        return res;
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    46
    }, {});
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    47
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    48
    return {
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    49
      'lexvoids': resMap
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    50
    };
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    51
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    52
  });
5cd8c3065c38 extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents: 126
diff changeset
    53
126
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
  /*
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
    Route shorthand cheatsheet
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
  */
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
  /*
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
    GET shorthands
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
    // Collections
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
    this.get('/contacts');
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
    this.get('/contacts', 'users');
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
    this.get('/contacts', ['contacts', 'addresses']);
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
    // Single objects
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
    this.get('/contacts/:id');
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
    this.get('/contacts/:id', 'user');
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
    this.get('/contacts/:id', ['contact', 'addresses']);
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
  */
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
  /*
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
    POST shorthands
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
    this.post('/contacts');
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
    this.post('/contacts', 'user'); // specify the type of resource to be created
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
  */
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
  /*
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
    PUT shorthands
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
    this.put('/contacts/:id');
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
    this.put('/contacts/:id', 'user'); // specify the type of resource to be updated
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
  */
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
  /*
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
    DELETE shorthands
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
    this.del('/contacts/:id');
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
    this.del('/contacts/:id', 'user'); // specify the type of resource to be deleted
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
    // Single object + related resources. Make sure parent resource is first.
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
    this.del('/contacts/:id', ['contact', 'addresses']);
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
  */
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
  /*
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
    Function fallback. Manipulate data in the db via
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
      - db.{collection}
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
      - db.{collection}.find(id)
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
      - db.{collection}.where(query)
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
      - db.{collection}.update(target, attrs)
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
      - db.{collection}.remove(target)
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
    // Example: return a single object with related models
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
    this.get('/contacts/:id', function(db, request) {
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
      var contactId = +request.params.id;
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
      return {
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
        contact: db.contacts.find(contactId),
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
        addresses: db.addresses.where({contact_id: contactId})
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
      };
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
    });
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
  */
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
}
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
/*
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
You can optionally export a config that is only loaded during tests
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
export function testConfig() {
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
}
e87a340711a4 improve on dataloading. add fixture management with proper interface to load data.
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
*/