UNPKG

9.28 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { "default": obj }; };
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8
9require("babel/polyfill");
10
11var _fs = require("fs");
12
13var _fs2 = _interopRequireWildcard(_fs);
14
15var _path = require("path");
16
17var _path2 = _interopRequireWildcard(_path);
18
19var _Knex = require("knex");
20
21var _Knex2 = _interopRequireWildcard(_Knex);
22
23var _Bookshelf = require("bookshelf");
24
25var _Bookshelf2 = _interopRequireWildcard(_Bookshelf);
26
27var _utils = require("../utils");
28
29var _utils2 = _interopRequireWildcard(_utils);
30
31var _defaultConfig = require("../config/bookshelf");
32
33var _defaultConfig2 = _interopRequireWildcard(_defaultConfig);
34
35"use strict";
36
37exports["default"] = {
38 loadPriority: 1000,
39 startPriority: 1000,
40 stopPriority: 1000,
41
42 initialize: function initialize(api, next) {
43 var basefiles, config, files, loadFile, regex;
44
45 // namespace
46 api.models = {};
47 api.bookshelf = {};
48
49 if (_defaultConfig2["default"][api.env]) {
50 api.config.bookshelf = api.utils.hashMerge(_defaultConfig2["default"][api.env].bookshelf(api), api.config.bookshelf);
51 } else {
52 api.config.bookshelf = api.utils.hashMerge(_defaultConfig2["default"]["default"].bookshelf(api), api.config.bookshelf);
53 }
54
55 config = api.config.bookshelf;
56
57 // 初期化
58 api.bookshelf = _Bookshelf2["default"].initialize(_Knex2["default"](config));
59
60 // モデルファイル読み込みとファイル変更の監視
61 loadFile = function (file) {
62 api.log("model loaded: " + file, "debug");
63 delete require.cache[require.resolve(file)];
64
65 // NOTE: es6.models は動的読み込みに対応していない
66 require(file)(api);
67
68 api.watchFileAndAct(file, function () {
69 api.log("\r\n\r\n*** rebooting due to model change (" + file + ") ***\r\n\r\n", "info");
70 return api.commands.restart.call(api._self);
71 });
72 };
73
74 // モデルディレクトリのファイル一覧取得
75 files = _fs2["default"].readdirSync(config.models.directory);
76 files = files.filter(function (file) {
77 return file.indexOf(".") !== 0;
78 });
79 files = files.map(function (file) {
80 return _path2["default"].resolve(config.models.directory, file);
81 });
82
83 // ベースファイルの読み込み
84 regex = /\/base\./;
85 basefiles = files.filter(function (file) {
86 return regex.test(file);
87 });
88 basefiles.forEach(function (file) {
89 return loadFile(file);
90 });
91 files = files.filter(function (file) {
92 return !regex.test(file);
93 });
94 files.forEach(function (file) {
95 return loadFile(file);
96 });
97
98 // ユーティリティー読み込み
99 api.bookshelf.utils = _utils2["default"](api);
100
101 return next();
102 },
103
104 start: function start(api, next) {
105 return next();
106 },
107
108 stop: function stop(api, next) {
109 return api.bookshelf.knex.destroy(next);
110 }
111};
112module.exports = exports["default"];
113//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluaXRpYWxpemVycy9ib29rc2hlbGYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7UUFFTyxnQkFBZ0I7O2tCQUNSLElBQUk7Ozs7b0JBQ0YsTUFBTTs7OztvQkFDTixNQUFNOzs7O3lCQUNELFdBQVc7Ozs7cUJBQ2YsVUFBVTs7Ozs2QkFDRixxQkFBcUI7Ozs7QUFSL0MsWUFBWSxDQUFDOztxQkFVRTtBQUNiLGNBQVksRUFBRyxJQUFJO0FBQ25CLGVBQWEsRUFBRSxJQUFJO0FBQ25CLGNBQVksRUFBRyxJQUFJOztBQUVuQixZQUFVLEVBQUUsb0JBQVMsR0FBRyxFQUFFLElBQUksRUFBRTtBQUM5QixRQUFJLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUM7OztBQUc5QyxPQUFHLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNoQixPQUFHLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQzs7QUFFbkIsUUFBSSwyQkFBYyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDMUIsU0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsMkJBQWMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQ3pHLE1BQ0k7QUFDSCxTQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxxQ0FBcUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUN4Rzs7QUFFRCxVQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7OztBQUc5QixPQUFHLENBQUMsU0FBUyxHQUFHLHVCQUFVLFVBQVUsQ0FBQyxrQkFBSyxNQUFNLENBQUMsQ0FBQyxDQUFDOzs7QUFHbkQsWUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQ3hCLFNBQUcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzFDLGFBQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7OztBQUc1QyxBQUFDLGFBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBRSxHQUFHLENBQUMsQ0FBQzs7QUFFckIsU0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsWUFBVztBQUNuQyxXQUFHLENBQUMsR0FBRyxDQUFDLDZDQUE2QyxHQUFHLElBQUksR0FBRyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDeEYsZUFBTyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO09BQzdDLENBQUMsQ0FBQztLQUNKLENBQUM7OztBQUdGLFNBQUssR0FBRyxnQkFBRyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNoRCxTQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBRSxVQUFDLElBQUk7YUFBSyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7S0FBQSxDQUFFLENBQUM7QUFDMUQsU0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUUsVUFBQyxJQUFJO2FBQUssa0JBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQztLQUFBLENBQUUsQ0FBQzs7O0FBRzNFLFNBQUssR0FBRyxVQUFVLENBQUM7QUFDbkIsYUFBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUUsVUFBQyxJQUFJO2FBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7S0FBQSxDQUFFLENBQUM7QUFDdkQsYUFBUyxDQUFDLE9BQU8sQ0FBRSxVQUFDLElBQUk7YUFBSyxRQUFRLENBQUMsSUFBSSxDQUFDO0tBQUEsQ0FBRSxDQUFDO0FBQzlDLFNBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFFLFVBQUMsSUFBSTthQUFLLENBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQUFBQztLQUFBLENBQUUsQ0FBQztBQUN0RCxTQUFLLENBQUMsT0FBTyxDQUFFLFVBQUMsSUFBSTthQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUM7S0FBQSxDQUFFLENBQUM7OztBQUcxQyxPQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxtQkFBTSxHQUFHLENBQUMsQ0FBQzs7QUFFakMsV0FBTyxJQUFJLEVBQUUsQ0FBQztHQUNmOztBQUVELE9BQUssRUFBRSxlQUFTLEdBQUcsRUFBRSxJQUFJLEVBQUU7QUFDekIsV0FBTyxJQUFJLEVBQUUsQ0FBQztHQUNmOztBQUVELE1BQUksRUFBRSxjQUFTLEdBQUcsRUFBRSxJQUFJLEVBQUU7QUFDeEIsV0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDekM7Q0FDRiIsImZpbGUiOiJpbml0aWFsaXplcnMvYm9va3NoZWxmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBcImJhYmVsL3BvbHlmaWxsXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IEtuZXggZnJvbSBcImtuZXhcIjtcbmltcG9ydCBCb29rc2hlbGYgZnJvbSBcImJvb2tzaGVsZlwiO1xuaW1wb3J0IHV0aWxzIGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IGRlZmF1bHRDb25maWcgZnJvbSBcIi4uL2NvbmZpZy9ib29rc2hlbGZcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBsb2FkUHJpb3JpdHk6ICAxMDAwLFxuICBzdGFydFByaW9yaXR5OiAxMDAwLFxuICBzdG9wUHJpb3JpdHk6ICAxMDAwLFxuXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uKGFwaSwgbmV4dCkge1xuICAgIHZhciBiYXNlZmlsZXMsIGNvbmZpZywgZmlsZXMsIGxvYWRGaWxlLCByZWdleDtcblxuICAgIC8vIG5hbWVzcGFjZVxuICAgIGFwaS5tb2RlbHMgPSB7fTtcbiAgICBhcGkuYm9va3NoZWxmID0ge307XG5cbiAgICBpZiAoZGVmYXVsdENvbmZpZ1thcGkuZW52XSkge1xuICAgICAgYXBpLmNvbmZpZy5ib29rc2hlbGYgPSBhcGkudXRpbHMuaGFzaE1lcmdlKGRlZmF1bHRDb25maWdbYXBpLmVudl0uYm9va3NoZWxmKGFwaSksIGFwaS5jb25maWcuYm9va3NoZWxmKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBhcGkuY29uZmlnLmJvb2tzaGVsZiA9IGFwaS51dGlscy5oYXNoTWVyZ2UoZGVmYXVsdENvbmZpZy5kZWZhdWx0LmJvb2tzaGVsZihhcGkpLCBhcGkuY29uZmlnLmJvb2tzaGVsZik7XG4gICAgfVxuXG4gICAgY29uZmlnID0gYXBpLmNvbmZpZy5ib29rc2hlbGY7XG5cbiAgICAvLyDliJ3mnJ/ljJZcbiAgICBhcGkuYm9va3NoZWxmID0gQm9va3NoZWxmLmluaXRpYWxpemUoS25leChjb25maWcpKTtcblxuICAgIC8vIOODouODh+ODq+ODleOCoeOCpOODq+iqreOBv+i+vOOBv+OBqOODleOCoeOCpOODq+WkieabtOOBruebo+imllxuICAgIGxvYWRGaWxlID0gZnVuY3Rpb24oZmlsZSkge1xuICAgICAgYXBpLmxvZyhcIm1vZGVsIGxvYWRlZDogXCIgKyBmaWxlLCBcImRlYnVnXCIpO1xuICAgICAgZGVsZXRlIHJlcXVpcmUuY2FjaGVbcmVxdWlyZS5yZXNvbHZlKGZpbGUpXTtcblxuICAgICAgLy8gTk9URTogZXM2Lm1vZGVscyDjga/li5XnmoToqq3jgb/ovrzjgb/jgavlr77lv5zjgZfjgabjgYTjgarjgYRcbiAgICAgIChyZXF1aXJlKGZpbGUpKShhcGkpO1xuXG4gICAgICBhcGkud2F0Y2hGaWxlQW5kQWN0KGZpbGUsIGZ1bmN0aW9uKCkge1xuICAgICAgICBhcGkubG9nKFwiXFxyXFxuXFxyXFxuKioqIHJlYm9vdGluZyBkdWUgdG8gbW9kZWwgY2hhbmdlIChcIiArIGZpbGUgKyBcIikgKioqXFxyXFxuXFxyXFxuXCIsIFwiaW5mb1wiKTtcbiAgICAgICAgcmV0dXJuIGFwaS5jb21tYW5kcy5yZXN0YXJ0LmNhbGwoYXBpLl9zZWxmKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvLyDjg6Ljg4fjg6vjg4fjgqPjg6zjgq/jg4jjg6rjga7jg5XjgqHjgqTjg6vkuIDopqflj5blvpdcbiAgICBmaWxlcyA9IGZzLnJlYWRkaXJTeW5jKGNvbmZpZy5tb2RlbHMuZGlyZWN0b3J5KTtcbiAgICBmaWxlcyA9IGZpbGVzLmZpbHRlciggKGZpbGUpID0+IGZpbGUuaW5kZXhPZihcIi5cIikgIT09IDAgKTtcbiAgICBmaWxlcyA9IGZpbGVzLm1hcCggKGZpbGUpID0+IHBhdGgucmVzb2x2ZShjb25maWcubW9kZWxzLmRpcmVjdG9yeSwgZmlsZSkgKTtcblxuICAgIC8vIOODmeODvOOCueODleOCoeOCpOODq+OBruiqreOBv+i+vOOBv1xuICAgIHJlZ2V4ID0gL1xcL2Jhc2VcXC4vO1xuICAgIGJhc2VmaWxlcyA9IGZpbGVzLmZpbHRlciggKGZpbGUpID0+IHJlZ2V4LnRlc3QoZmlsZSkgKTtcbiAgICBiYXNlZmlsZXMuZm9yRWFjaCggKGZpbGUpID0+IGxvYWRGaWxlKGZpbGUpICk7XG4gICAgZmlsZXMgPSBmaWxlcy5maWx0ZXIoIChmaWxlKSA9PiAhKHJlZ2V4LnRlc3QoZmlsZSkpICk7XG4gICAgZmlsZXMuZm9yRWFjaCggKGZpbGUpID0+IGxvYWRGaWxlKGZpbGUpICk7XG5cbiAgICAvLyDjg6bjg7zjg4bjgqPjg6rjg4bjgqPjg7zoqq3jgb/ovrzjgb9cbiAgICBhcGkuYm9va3NoZWxmLnV0aWxzID0gdXRpbHMoYXBpKTtcblxuICAgIHJldHVybiBuZXh0KCk7XG4gIH0sXG5cbiAgc3RhcnQ6IGZ1bmN0aW9uKGFwaSwgbmV4dCkge1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH0sXG5cbiAgc3RvcDogZnVuY3Rpb24oYXBpLCBuZXh0KSB7XG4gICAgcmV0dXJuIGFwaS5ib29rc2hlbGYua25leC5kZXN0cm95KG5leHQpO1xuICB9XG59O1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
\No newline at end of file