blob: 67533ed9eed29a157beef3126e61c05e1f808a7e (
plain) (
blame)
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
|
const { convertToJSON } = require('../../jsUtils');
const { ferdiumVersion } = require('../../environment-remote');
/**
* Migrate server database to work with current Ferdium version
*/
const Database = use('Database');
const User = use('App/Models/User');
const migrateLog = text => {
console.log('\u001B[36m%s\u001B[0m', 'Ferdium Migration:', '\u001B[0m', text);
};
module.exports = async () => {
migrateLog('🧙 Running database migration wizard');
// Make sure user table exists
await Database.raw(
'CREATE TABLE IF NOT EXISTS `users` (`id` integer not null primary key autoincrement, `settings` text, `created_at` datetime, `updated_at` datetime);',
);
const user = await User.find(1);
let settings;
if (user) {
settings = convertToJSON(user.settings);
} else {
migrateLog("🎩 Migrating from old Ferdium version as user doesn't exist");
// Create new user
await Database.raw('INSERT INTO "users" ("id") VALUES (\'1\');');
}
if (
!settings ||
!settings.db_version ||
settings.db_version !== ferdiumVersion
) {
const srcVersion = settings?.db_version || '5.4.0-beta.2';
migrateLog(`🔮 Migrating table from ${srcVersion} to ${ferdiumVersion}`);
// Migrate database to current Ferdium version
// Currently no migrations
// Update version number in database
if (!settings) settings = {};
settings.db_version = ferdiumVersion;
const newUser = await User.find(1); // Fetch user again as we might have only just created it
newUser.settings = JSON.stringify(settings);
await newUser.save();
} else {
migrateLog('🔧 Nothing to migrate, already on the newest version');
}
};
|