-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall.js
111 lines (104 loc) · 3.58 KB
/
install.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
const exec = require('child_process').exec;
module.exports = {
/**
* Return a list of updates
*
* @param {Object} we we.js object
* @return {Array} a list of update objects
*/
updates() {
return [{
version: '1.2.0',
update(we, done) {
we.utils.async.series([
function (done) {
we.db.defaultConnection
.transaction(function () {
return we.db.Sequelize.Promise.all([
we.db.defaultConnection.query('ALTER TABLE `images` ADD '+
' COLUMN `storageName` VARCHAR(255) NULL ;'),
we.db.defaultConnection.query('ALTER TABLE `images` ADD '+
' COLUMN `isLocalStorage` TINYINT(1) DEFAULT 1;'),
we.db.defaultConnection.query('ALTER TABLE `images` ADD '+
' COLUMN `urls` BLOB NULL ;'),
we.db.defaultConnection.query('ALTER TABLE `images` ADD '+
' COLUMN `extraData` BLOB NULL ;'),
we.db.defaultConnection.query('ALTER TABLE `files` ADD '+
' COLUMN `storageName` VARCHAR(255) NULL ;'),
we.db.defaultConnection.query('ALTER TABLE `files` ADD '+
' COLUMN `isLocalStorage` TINYINT(1) DEFAULT 1;') ,
we.db.defaultConnection.query('ALTER TABLE `files` ADD '+
' COLUMN `urls` BLOB NULL ;'),
we.db.defaultConnection.query('ALTER TABLE `files` ADD '+
' COLUMN `extraData` BLOB NULL ;')
]);
})
.nodeify(done);
},
function istallLocalStorage(done) {
exec('npm install we-plugin-file-local', function (error) {
if (error) {
we.log.warn('we-plugin-file-local:'+
'error in install we-plugin-file-local, run npm i --save we-plugin-file-local to enable local upload')
}
return done()
})
}
], done);
}
},
{
version: '1.3.1',
update(we, done) {
let imageStrategy = we.config.upload.storages.localImages;
let fileStrategy = we.config.upload.storages.localFiles;
let styles = we.config.upload.image.styles;
we.utils.async.series([
function (done) {
we.db.models.image
.findAll({
where: {
storageName: null
}
})
.then(function (r) {
we.utils.async.eachSeries(r, function (file, next) {
file.storageName = 'localImages';
let urls = {
original: imageStrategy.getUrlFromFile('original', file)
}
for (let sName in styles) {
urls[sName] = '/api/v1/image/' + sName + '/' + file.name
}
file.urls = urls;
file.save().nodeify(next);
}, done);
return null;
})
.catch(done);
},
function (done) {
we.db.models.file
.findAll({
where: {
storageName: null
}
})
.then(function (r) {
we.utils.async.eachSeries(r, function (file, next) {
file.storageName = 'localFiles';
file.urls = {
original: fileStrategy.getUrlFromFile('original', file)
}
file.save().nodeify(next);
}, done);
return null;
})
.catch(done);
}
], done);
}
}
];
}
}