Skip to content

Commit 8dd4e96

Browse files
committed
implement 0.7.1 migration
1 parent f2197e9 commit 8dd4e96

File tree

2 files changed

+72
-2
lines changed

2 files changed

+72
-2
lines changed
Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,72 @@
1+
var async = require('async'),
2+
toString = require('components/utils').toString;
3+
14
/**
2-
* Created by iliakebets on 23.01.17.
5+
* v0.7.1:
6+
*
7+
* - Fixes streams with parentId='' to parentId=null
38
*/
9+
module.exports = function (context, callback) {
10+
context.database.getCollection({name: 'users'}, function (err, usersCol) {
11+
if (err) { return callback(err); }
12+
13+
usersCol.find({}).toArray(function (err, users) {
14+
if (err) { return callback(err); }
15+
16+
async.forEachSeries(users, migrateUser, function (err) {
17+
if (err) { return callback(err); }
18+
19+
context.logInfo('Data version is now 0.7.1');
20+
callback();
21+
});
22+
});
23+
});
24+
25+
function migrateUser(user, callback) {
26+
context.logInfo('Migrating user ' + toString.user(user) + '...');
27+
async.series([
28+
function updateStreamsStructure(stepDone) {
29+
context.database.getCollection({name: user._id + '.streams'}, function (err, streamsCol) {
30+
if (err) {
31+
context.logError(err, 'retrieving streams collection');
32+
return stepDone(err);
33+
}
34+
35+
var streamsCursor = streamsCol.find(),
36+
completed = false;
37+
async.until(function () { return completed; }, migrateStreams,
38+
context.stepCallbackFn('migrating events structure', stepDone));
39+
40+
function migrateStreams(streamDone) {
41+
streamsCursor.nextObject(function (err, stream) {
42+
if (err) { return setImmediate(streamDone.bind(null, err)); }
43+
if (! stream) {
44+
completed = true;
45+
return setImmediate(streamDone);
46+
}
47+
48+
if (stream.parentId !== '') {
49+
return setImmediate(streamDone);
50+
}
51+
52+
var update = {
53+
$set: {
54+
parentId: null
55+
}
56+
};
57+
58+
streamsCol.update({_id: stream._id}, update, streamDone);
59+
});
60+
}
61+
});
62+
}
63+
], function (err) {
64+
if (err) {
65+
context.logError(err, 'migrating user');
66+
return callback(err);
67+
}
68+
context.logInfo('Successfully migrated user ' + toString.user(user) + '.');
69+
callback();
70+
});
71+
}
72+
};

components/storage/src/migrations/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ module.exports = {
99
'0.3.0': require('./0.3.0.js'),
1010
'0.4.0': require('./0.4.0.js'),
1111
'0.5.0': require('./0.5.0.js'),
12-
'0.7.0': require('./0.7.0.js')
12+
'0.7.0': require('./0.7.0.js'),
13+
'0.7.1': require('./0.7.1.js')
1314
};

0 commit comments

Comments
 (0)