1 | ;
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | require("babel/polyfill");
|
8 |
|
9 | ;
|
10 |
|
11 | exports["default"] = function (grunt) {
|
12 | grunt.registerTask("db:version", "Show the current migration version", function () {
|
13 | var done;
|
14 | done = this.async();
|
15 | return grunt.startActionhero(function (api) {
|
16 | return api.bookshelf.utils.db.version().then(function (version) {
|
17 | grunt.log.oklns("Migrate version: " + version);
|
18 | return done();
|
19 | })["catch"](function (err) {
|
20 | return done(err);
|
21 | });
|
22 | });
|
23 | });
|
24 |
|
25 | grunt.registerTask("db:rollback", "Rollback the database", function () {
|
26 | var done;
|
27 | done = this.async();
|
28 | return grunt.startActionhero(function (api) {
|
29 | return api.bookshelf.utils.db.version().then(function (oldVersion) {
|
30 | return api.bookshelf.utils.db.rollback().then(function () {
|
31 | return api.bookshelf.utils.db.version().then(function (newVersion) {
|
32 | grunt.log.oklns(oldVersion + " to " + newVersion);
|
33 | return done();
|
34 | });
|
35 | });
|
36 | })["catch"](function (err) {
|
37 | return done(err);
|
38 | });
|
39 | });
|
40 | });
|
41 |
|
42 | grunt.registerTask("db:migrate:make", "Make migrate file (:name)", function (name) {
|
43 | var done;
|
44 | done = this.async();
|
45 | if (name == null) {
|
46 | return done(new Error("The file name is required.\nExample: grunt db:migrate:make:create_users"));
|
47 | }
|
48 | return grunt.startActionhero(function (api) {
|
49 | return api.bookshelf.utils.db.migrate.make(name).then(function (name) {
|
50 | grunt.log.oklns("Make " + name);
|
51 | return done();
|
52 | })["catch"](function (err) {
|
53 | return done(err);
|
54 | });
|
55 | });
|
56 | });
|
57 |
|
58 | grunt.registerTask("db:migrate", "Migrate the database", function () {
|
59 | var done;
|
60 | done = this.async();
|
61 | return grunt.startActionhero(function (api) {
|
62 | return api.bookshelf.utils.db.migrate.run().then(function () {
|
63 | grunt.log.oklns("Migrate database " + api.config.bookshelf.connection.database + ".");
|
64 | return done();
|
65 | })["catch"](function (err) {
|
66 | return done(err);
|
67 | });
|
68 | });
|
69 | });
|
70 |
|
71 | grunt.registerTask("db:seed:make", "Make seed file (:name)", function (name) {
|
72 | var done;
|
73 | done = this.async();
|
74 | if (name == null) {
|
75 | return done(new Error("The file name is required.\nExample: grunt db:seed:make:countries"));
|
76 | }
|
77 | return grunt.startActionhero(function (api) {
|
78 | return api.bookshelf.utils.db.seed.make(name).then(function (name) {
|
79 | grunt.log.oklns("Make " + name);
|
80 | return done();
|
81 | })["catch"](function (err) {
|
82 | return done(err);
|
83 | });
|
84 | });
|
85 | });
|
86 |
|
87 | grunt.registerTask("db:seed", "Create the seed data", function () {
|
88 | var done;
|
89 | done = this.async();
|
90 | return grunt.startActionhero(function (api) {
|
91 | return api.bookshelf.utils.db.seed.run().then(function () {
|
92 | grunt.log.oklns("Seed database " + api.config.bookshelf.connection.database + ".");
|
93 | return done();
|
94 | })["catch"](function (err) {
|
95 | return done(err);
|
96 | });
|
97 | });
|
98 | });
|
99 |
|
100 | grunt.registerTask("db:create", "Create the database", function () {
|
101 | var done, ok;
|
102 | done = this.async();
|
103 | return grunt.startActionhero(function (api) {
|
104 | var ok = "Create database " + api.config.bookshelf.connection.database + ".";
|
105 | return api.bookshelf.utils.db.create().then(function () {
|
106 | grunt.log.oklns(ok);
|
107 | return done();
|
108 | })["catch"](function (err) {
|
109 | return done(err);
|
110 | });
|
111 | });
|
112 | });
|
113 |
|
114 | grunt.registerTask("db:drop", "Drop the database", function () {
|
115 | var done, ok;
|
116 | done = this.async();
|
117 | return grunt.startActionhero(function (api) {
|
118 | ok = "Drop database " + api.config.bookshelf.connection.database + ".";
|
119 | return api.bookshelf.utils.db.create().then(function () {
|
120 | grunt.log.oklns(ok);
|
121 | return done();
|
122 | })["catch"](function (err) {
|
123 | return done(err);
|
124 | });
|
125 | });
|
126 | });
|
127 |
|
128 | grunt.registerTask("db:migrate:reset", "Runs db:drop db:create db:migrate", ["db:drop", "db:create", "db:migrate"]);
|
129 | grunt.registerTask("db:reset", "Runs db:migrate:reset db:seed", ["db:migrate:reset", "db:seed"]);
|
130 |
|
131 | return true;
|
132 | };
|
133 |
|
134 | ;
|
135 | module.exports = exports["default"];
|
136 | //# sourceMappingURL=data:application/json;base64,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T0FBSyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxtQ0FBbUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNwSCxPQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSwrQkFBK0IsRUFBRSxDQUFDLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7O0FBRWpHLFNBQU8sSUFBSSxDQUFDO0NBQ2I7O0FBQUEsQ0FBQyIsImZpbGUiOiJncnVudC9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgXCJiYWJlbC9wb2x5ZmlsbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihncnVudCkge1xuICBncnVudC5yZWdpc3RlclRhc2soJ2RiOnZlcnNpb24nLCAnU2hvdyB0aGUgY3VycmVudCBtaWdyYXRpb24gdmVyc2lvbicsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBkb25lO1xuICAgIGRvbmUgPSB0aGlzLmFzeW5jKCk7XG4gICAgcmV0dXJuIGdydW50LnN0YXJ0QWN0aW9uaGVybyhmdW5jdGlvbihhcGkpIHtcbiAgICAgIHJldHVybiBhcGkuYm9va3NoZWxmLnV0aWxzLmRiLnZlcnNpb24oKS50aGVuKGZ1bmN0aW9uKHZlcnNpb24pIHtcbiAgICAgICAgZ3J1bnQubG9nLm9rbG5zKFwiTWlncmF0ZSB2ZXJzaW9uOiBcIiArIHZlcnNpb24pO1xuICAgICAgICByZXR1cm4gZG9uZSgpO1xuICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIHJldHVybiBkb25lKGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZ3J1bnQucmVnaXN0ZXJUYXNrKCdkYjpyb2xsYmFjaycsICdSb2xsYmFjayB0aGUgZGF0YWJhc2UnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgZG9uZTtcbiAgICBkb25lID0gdGhpcy5hc3luYygpO1xuICAgIHJldHVybiBncnVudC5zdGFydEFjdGlvbmhlcm8oZnVuY3Rpb24oYXBpKSB7XG4gICAgICByZXR1cm4gYXBpLmJvb2tzaGVsZi51dGlscy5kYi52ZXJzaW9uKCkudGhlbihmdW5jdGlvbihvbGRWZXJzaW9uKSB7XG4gICAgICAgIHJldHVybiBhcGkuYm9va3NoZWxmLnV0aWxzLmRiLnJvbGxiYWNrKCkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gYXBpLmJvb2tzaGVsZi51dGlscy5kYi52ZXJzaW9uKCkudGhlbihmdW5jdGlvbihuZXdWZXJzaW9uKSB7XG4gICAgICAgICAgICBncnVudC5sb2cub2tsbnMob2xkVmVyc2lvbiArIFwiIHRvIFwiICsgbmV3VmVyc2lvbik7XG4gICAgICAgICAgICByZXR1cm4gZG9uZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikge1xuICAgICAgICByZXR1cm4gZG9uZShlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGdydW50LnJlZ2lzdGVyVGFzaygnZGI6bWlncmF0ZTptYWtlJywgJ01ha2UgbWlncmF0ZSBmaWxlICg6bmFtZSknLCBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIGRvbmU7XG4gICAgZG9uZSA9IHRoaXMuYXN5bmMoKTtcbiAgICBpZiAobmFtZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZG9uZShuZXcgRXJyb3IoXCJUaGUgZmlsZSBuYW1lIGlzIHJlcXVpcmVkLlxcbkV4YW1wbGU6IGdydW50IGRiOm1pZ3JhdGU6bWFrZTpjcmVhdGVfdXNlcnNcIikpO1xuICAgIH1cbiAgICByZXR1cm4gZ3J1bnQuc3RhcnRBY3Rpb25oZXJvKGZ1bmN0aW9uKGFwaSkge1xuICAgICAgcmV0dXJuIGFwaS5ib29rc2hlbGYudXRpbHMuZGIubWlncmF0ZS5tYWtlKG5hbWUpLnRoZW4oZnVuY3Rpb24obmFtZSkge1xuICAgICAgICBncnVudC5sb2cub2tsbnMoXCJNYWtlIFwiICsgbmFtZSk7XG4gICAgICAgIHJldHVybiBkb25lKCk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBncnVudC5yZWdpc3RlclRhc2soJ2RiOm1pZ3JhdGUnLCAnTWlncmF0ZSB0aGUgZGF0YWJhc2UnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgZG9uZTtcbiAgICBkb25lID0gdGhpcy5hc3luYygpO1xuICAgIHJldHVybiBncnVudC5zdGFydEFjdGlvbmhlcm8oZnVuY3Rpb24oYXBpKSB7XG4gICAgICByZXR1cm4gYXBpLmJvb2tzaGVsZi51dGlscy5kYi5taWdyYXRlLnJ1bigpLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgIGdydW50LmxvZy5va2xucyhcIk1pZ3JhdGUgZGF0YWJhc2UgXCIgKyBhcGkuY29uZmlnLmJvb2tzaGVsZi5jb25uZWN0aW9uLmRhdGFiYXNlICsgXCIuXCIpO1xuICAgICAgICByZXR1cm4gZG9uZSgpO1xuICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIHJldHVybiBkb25lKGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZ3J1bnQucmVnaXN0ZXJUYXNrKCdkYjpzZWVkOm1ha2UnLCAnTWFrZSBzZWVkIGZpbGUgKDpuYW1lKScsIGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgZG9uZTtcbiAgICBkb25lID0gdGhpcy5hc3luYygpO1xuICAgIGlmIChuYW1lID09IG51bGwpIHtcbiAgICAgIHJldHVybiBkb25lKG5ldyBFcnJvcihcIlRoZSBmaWxlIG5hbWUgaXMgcmVxdWlyZWQuXFxuRXhhbXBsZTogZ3J1bnQgZGI6c2VlZDptYWtlOmNvdW50cmllc1wiKSk7XG4gICAgfVxuICAgIHJldHVybiBncnVudC5zdGFydEFjdGlvbmhlcm8oZnVuY3Rpb24oYXBpKSB7XG4gICAgICByZXR1cm4gYXBpLmJvb2tzaGVsZi51dGlscy5kYi5zZWVkLm1ha2UobmFtZSkudGhlbihmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgIGdydW50LmxvZy5va2xucyhcIk1ha2UgXCIgKyBuYW1lKTtcbiAgICAgICAgcmV0dXJuIGRvbmUoKTtcbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikge1xuICAgICAgICByZXR1cm4gZG9uZShlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGdydW50LnJlZ2lzdGVyVGFzaygnZGI6c2VlZCcsICdDcmVhdGUgdGhlIHNlZWQgZGF0YScsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBkb25lO1xuICAgIGRvbmUgPSB0aGlzLmFzeW5jKCk7XG4gICAgcmV0dXJuIGdydW50LnN0YXJ0QWN0aW9uaGVybyhmdW5jdGlvbihhcGkpIHtcbiAgICAgIHJldHVybiBhcGkuYm9va3NoZWxmLnV0aWxzLmRiLnNlZWQucnVuKCkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgZ3J1bnQubG9nLm9rbG5zKFwiU2VlZCBkYXRhYmFzZSBcIiArIGFwaS5jb25maWcuYm9va3NoZWxmLmNvbm5lY3Rpb24uZGF0YWJhc2UgKyBcIi5cIik7XG4gICAgICAgIHJldHVybiBkb25lKCk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBncnVudC5yZWdpc3RlclRhc2soJ2RiOmNyZWF0ZScsICdDcmVhdGUgdGhlIGRhdGFiYXNlJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIGRvbmUsIG9rO1xuICAgIGRvbmUgPSB0aGlzLmFzeW5jKCk7XG4gICAgcmV0dXJuIGdydW50LnN0YXJ0QWN0aW9uaGVybyhmdW5jdGlvbihhcGkpIHtcbiAgICAgIHZhciBvayA9IFwiQ3JlYXRlIGRhdGFiYXNlIFwiICsgYXBpLmNvbmZpZy5ib29rc2hlbGYuY29ubmVjdGlvbi5kYXRhYmFzZSArIFwiLlwiO1xuICAgICAgcmV0dXJuIGFwaS5ib29rc2hlbGYudXRpbHMuZGIuY3JlYXRlKCkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgZ3J1bnQubG9nLm9rbG5zKG9rKTtcbiAgICAgICAgcmV0dXJuIGRvbmUoKTtcbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikge1xuICAgICAgICByZXR1cm4gZG9uZShlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGdydW50LnJlZ2lzdGVyVGFzaygnZGI6ZHJvcCcsICdEcm9wIHRoZSBkYXRhYmFzZScsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBkb25lLCBvaztcbiAgICBkb25lID0gdGhpcy5hc3luYygpO1xuICAgIHJldHVybiBncnVudC5zdGFydEFjdGlvbmhlcm8oZnVuY3Rpb24oYXBpKSB7XG4gICAgICBvayA9IFwiRHJvcCBkYXRhYmFzZSBcIiArIGFwaS5jb25maWcuYm9va3NoZWxmLmNvbm5lY3Rpb24uZGF0YWJhc2UgKyBcIi5cIjtcbiAgICAgIHJldHVybiBhcGkuYm9va3NoZWxmLnV0aWxzLmRiLmNyZWF0ZSgpLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgIGdydW50LmxvZy5va2xucyhvayk7XG4gICAgICAgIHJldHVybiBkb25lKCk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBncnVudC5yZWdpc3RlclRhc2soJ2RiOm1pZ3JhdGU6cmVzZXQnLCAnUnVucyBkYjpkcm9wIGRiOmNyZWF0ZSBkYjptaWdyYXRlJywgWydkYjpkcm9wJywgJ2RiOmNyZWF0ZScsICdkYjptaWdyYXRlJ10pO1xuICBncnVudC5yZWdpc3RlclRhc2soJ2RiOnJlc2V0JywgJ1J1bnMgZGI6bWlncmF0ZTpyZXNldCBkYjpzZWVkJywgWydkYjptaWdyYXRlOnJlc2V0JywgJ2RiOnNlZWQnXSk7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 |
\ | No newline at end of file |