UNPKG

2.91 kBJavaScriptView Raw
1// Generated by CoffeeScript 1.6.3
2/*
3# Plugin for the Americano web framework that take care of your Model
4# by providing helpers to build them (it wraps jugglingdb!) and asking you
5# for writing your requests in a single and clean file.
6#
7# This plugin has only sense for Cozy applications.
8*/
9
10
11(function() {
12 var Schema, async, db, settings, _getRequestCreator, _loadModels, _loadRequestCreators;
13
14 async = require('async');
15
16 _loadModels = function(root, requests) {
17 var docRequests, docType, models;
18 models = [];
19 for (docType in requests) {
20 docRequests = requests[docType];
21 models[docType] = require("" + root + "/server/models/" + docType);
22 }
23 return models;
24 };
25
26 _getRequestCreator = function(root, models, docType, requestName, request) {
27 return function(cb) {
28 console.info("[INFO] " + docType + " - " + requestName + " request creation...");
29 return models[docType].defineRequest(requestName, request, function(err) {
30 if (err) {
31 console.log("[ERROR]... fail");
32 } else {
33 console.info("[INFO] ... ok");
34 }
35 return cb(err);
36 });
37 };
38 };
39
40 _loadRequestCreators = function(root, models, requests) {
41 var docRequest, docRequests, docType, requestName, requestsToSave;
42 requestsToSave = [];
43 for (docType in requests) {
44 docRequests = requests[docType];
45 for (requestName in docRequests) {
46 docRequest = docRequests[requestName];
47 requestsToSave.push(_getRequestCreator(root, models, docType, requestName, docRequest));
48 }
49 }
50 return requestsToSave;
51 };
52
53 module.exports.configure = function(root, app, callback) {
54 var err, models, requests, requestsToSave;
55 try {
56 requests = require("" + root + "/server/models/requests");
57 } catch (_error) {
58 err = _error;
59 console.log("[ERROR] failed to load requests file");
60 callback(err);
61 }
62 models = _loadModels(root, requests);
63 requestsToSave = _loadRequestCreators(root, models, requests);
64 return async.series(requestsToSave, function(err) {
65 if (err && err.code !== 'EEXIST') {
66 console.log("[ERROR] A request creation failed, abandon.");
67 console.log(err);
68 if (callback != null) {
69 return callback(err);
70 }
71 } else {
72 console.info("[INFO] All requests have been created");
73 if (callback != null) {
74 return callback();
75 }
76 }
77 });
78 };
79
80 Schema = require('jugglingdb').Schema;
81
82 settings = {
83 url: 'http://localhost:9101/'
84 };
85
86 module.exports.db = db = new Schema('cozy-adapter', settings);
87
88 module.exports.getModel = function(name, fields) {
89 var model;
90 fields.id = String;
91 model = db.define(name, fields);
92 return model;
93 };
94
95 module.exports.defaultRequests = {
96 all: function(doc) {
97 return emit(doc._id, doc);
98 }
99 };
100
101}).call(this);