-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrestore.js
executable file
·66 lines (50 loc) · 1.71 KB
/
restore.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
#!/usr/bin/env node
var info = require('./info.js');
var common = require('./common.js');
var dropJs = require('./drop.js');
var shell = require('shelljs');
var servers = info.servers;
function restoreDatabasesAsync() {
info.verifyAndInitialize();
var backupDir = info.getBackupDir();
for(var i in servers) {
var server = servers[i];
restoreDatabaseAsync(server, backupDir);
}
}
function restoreDatabaseAsync(server, backupDir) {
if(!info.dropAndCreate) {
restoreDatabaseAsyncInternal(server);
return;
}
dropJs.dropDatabaseAsync(server, backupDir, function() {
restoreDatabaseAsyncInternal(server);
});
}
function restoreDatabaseAsyncInternal(server) {
var beforeFile = info.getBeforeFile(server);
if( shell.test('-e', beforeFile) ) {
common.executeSqlFileAsync(beforeFile, server, "mysql", function() {
restoreSchemasAndRecordsAsync(server);
});
return;
}
restoreSchemasAndRecordsAsync(server);
}
function restoreSchemasAndRecordsAsync(server) {
var schemasFilePath = info.getSchemasFilePath(server);
common.executeSqlFileAsync(schemasFilePath, server, server["database"], function() {
var recordsRequiredFilePath = info.getRecordsRequiredFilePath(server);
common.executeSqlFileAsync(recordsRequiredFilePath, server, server["database"], function() {
var recordsOptionalFilePath = info.getRecordsOptionalFilePath(server);
common.executeSqlFileAsync(recordsOptionalFilePath, server, server["database"], function() {
var afterFile = info.getAfterFile(server);
if(!afterFile) {
common.executeSqlFileAsync(afterFile, server, server["database"]);
}
});
});
});
}
exports.restoreDatabaseAsync = restoreDatabaseAsync;
exports.restoreDatabasesAsync = restoreDatabasesAsync;