UNPKG

2.91 kBJavaScriptView Raw
1// Generated by CoffeeScript 1.6.2
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
19 models = [];
20 for (docType in requests) {
21 docRequests = requests[docType];
22 models[docType] = require("" + root + "/server/models/" + docType);
23 }
24 return models;
25 };
26
27 _getRequestCreator = function(root, models, docType, requestName, request) {
28 return function(cb) {
29 console.info("[INFO] " + docType + " - " + requestName + " request creation...");
30 return models[docType].defineRequest(requestName, request, function(err) {
31 if (err) {
32 console.log("[ERROR]... fail");
33 } else {
34 console.info("[INFO] ... ok");
35 }
36 return cb(err);
37 });
38 };
39 };
40
41 _loadRequestCreators = function(root, models, requests) {
42 var docRequest, docRequests, docType, requestName, requestsToSave;
43
44 requestsToSave = [];
45 for (docType in requests) {
46 docRequests = requests[docType];
47 for (requestName in docRequests) {
48 docRequest = docRequests[requestName];
49 requestsToSave.push(_getRequestCreator(root, models, docType, requestName, docRequest));
50 }
51 }
52 return requestsToSave;
53 };
54
55 module.exports.configure = function(root, app, callback) {
56 var err, models, requests, requestsToSave;
57
58 try {
59 requests = require("" + root + "/server/models/requests");
60 } catch (_error) {
61 err = _error;
62 console.log("[ERROR] failed to load requests file");
63 callback(err);
64 }
65 models = _loadModels(root, requests);
66 requestsToSave = _loadRequestCreators(root, models, requests);
67 return async.series(requestsToSave, function(err) {
68 if (err && err.code !== 'EEXIST') {
69 console.log("[ERROR] A request creation failed, abandon.");
70 console.log(err);
71 if (callback != null) {
72 return callback(err);
73 }
74 } else {
75 console.info("[INFO] All requests have been created");
76 if (callback != null) {
77 return callback();
78 }
79 }
80 });
81 };
82
83 Schema = require('jugglingdb').Schema;
84
85 settings = {
86 url: 'http://localhost:9101/'
87 };
88
89 module.exports.db = db = new Schema('cozy-adapter', settings);
90
91 module.exports.getModel = function(name, fields) {
92 var model;
93
94 fields.id = String;
95 model = db.define(name, fields);
96 return model;
97 };
98
99 module.exports.defaultRequests = {
100 all: function(doc) {
101 return emit(doc.id, doc);
102 }
103 };
104
105}).call(this);