mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-21 09:52:06 +03:00
c9d1fa0b96
no issue Follow-up task of the updated Ghost Docs structure. Updated links reflecting the new structure to prevent unnecessary 404s and redirects.
75 lines
2.1 KiB
JavaScript
75 lines
2.1 KiB
JavaScript
const KnexMigrator = require('knex-migrator');
|
|
const config = require('../../../shared/config');
|
|
const errors = require('@tryghost/errors');
|
|
|
|
const knexMigrator = new KnexMigrator({
|
|
knexMigratorFilePath: config.get('paths:appRoot')
|
|
});
|
|
|
|
module.exports.getState = () => {
|
|
let state;
|
|
let err;
|
|
|
|
return knexMigrator.isDatabaseOK()
|
|
.then(() => {
|
|
state = 1;
|
|
return state;
|
|
})
|
|
.catch((_err) => {
|
|
err = _err;
|
|
|
|
// CASE: database was never created
|
|
if (err.code === 'DB_NOT_INITIALISED') {
|
|
state = 2;
|
|
return state;
|
|
}
|
|
|
|
// CASE: you have created the database on your own, you have an existing none compatible db?
|
|
if (err.code === 'MIGRATION_TABLE_IS_MISSING') {
|
|
state = 3;
|
|
return state;
|
|
}
|
|
|
|
// CASE: database needs migrations
|
|
if (err.code === 'DB_NEEDS_MIGRATION') {
|
|
state = 4;
|
|
return state;
|
|
}
|
|
|
|
// CASE: database connection errors, unknown cases
|
|
throw err;
|
|
});
|
|
};
|
|
|
|
module.exports.dbInit = () => {
|
|
return knexMigrator.init();
|
|
};
|
|
|
|
module.exports.migrate = () => {
|
|
return knexMigrator.migrate();
|
|
};
|
|
|
|
module.exports.isDbCompatible = (connection) => {
|
|
return connection.raw('SELECT `key` FROM settings WHERE `key`="databaseVersion";')
|
|
.then((response) => {
|
|
if (!response || !response[0].length) {
|
|
return;
|
|
}
|
|
|
|
throw new errors.DatabaseVersionError({
|
|
message: 'Your database version is not compatible with Ghost 2.0.',
|
|
help: 'Want to keep your DB? Use Ghost < 1.0.0 or the "0.11" branch.' +
|
|
'\n\n\n' +
|
|
'Want to migrate Ghost 0.11 to 2.0? Please visit https://ghost.org/docs/update/'
|
|
});
|
|
})
|
|
.catch((err) => {
|
|
// CASE settings table doesn't exists
|
|
if (err.errno === 1146 || err.errno === 1) {
|
|
return;
|
|
}
|
|
|
|
throw err;
|
|
});
|
|
};
|