More changes for db migration
This commit is contained in:
parent
de0284e48a
commit
889dc02945
33 changed files with 740 additions and 100 deletions
77
migrate/migrate-users.js
Normal file
77
migrate/migrate-users.js
Normal file
|
@ -0,0 +1,77 @@
|
|||
import co from 'co';
|
||||
|
||||
import models from '../models';
|
||||
import { mongo } from '../lib/mongo';
|
||||
|
||||
import debugname from 'debug';
|
||||
const debug = debugname('hostr:db');
|
||||
let db;
|
||||
|
||||
|
||||
co(function *sync() {
|
||||
debug('Syncing schema');
|
||||
yield models.sequelize.sync();
|
||||
debug('Schema synced');
|
||||
db = yield mongo;
|
||||
const users = yield db.Users.find({}, { sort: [['joined', 'asc']] }).toArray();
|
||||
for (const user of users) {
|
||||
if (user.joined === '0') {
|
||||
const file = yield db.Files.findOne({
|
||||
owner: user._id,
|
||||
}, {
|
||||
limit: 1,
|
||||
sort: [['time_added', 'asc']],
|
||||
});
|
||||
if (file && file.time_added > 0) {
|
||||
user.createdAt = new Date(file.time_added * 1000).getTime();
|
||||
} else {
|
||||
user.createdAt = new Date().getTime();
|
||||
}
|
||||
} else {
|
||||
user.createdAt = new Date(user.joined * 1000).getTime();
|
||||
}
|
||||
}
|
||||
|
||||
users.sort((a, b) => (a.createdAt < b.createdAt ? -1 : 1));
|
||||
|
||||
for (const user of users) {
|
||||
if (!user.email) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const exists = yield models.user.findOne({
|
||||
where: {
|
||||
email: user.email,
|
||||
},
|
||||
});
|
||||
|
||||
if (exists) {
|
||||
debug('User exists, continue');
|
||||
continue;
|
||||
}
|
||||
|
||||
const oldId = user._id.toString();
|
||||
|
||||
const newUser = yield models.user.create({
|
||||
email: user.email,
|
||||
password: user.salted_password,
|
||||
name: user.first_name ? `${user.first_name} ${user.last_name}` : null,
|
||||
plan: user.type || 'Free',
|
||||
activated: !user.activationCode,
|
||||
banned: !!user.banned,
|
||||
deletedAt: user.status === 'deleted' ? new Date().getTime() : null,
|
||||
createdAt: user.createdAt,
|
||||
updatedAt: user.createdAt,
|
||||
oldId,
|
||||
}, {
|
||||
include: [models.activation],
|
||||
});
|
||||
yield newUser.save({ silent: true });
|
||||
}
|
||||
models.sequelize.close();
|
||||
db.close();
|
||||
}).catch((err) => {
|
||||
models.sequelize.close();
|
||||
db.close();
|
||||
debug(err);
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue