1
0
Fork 0
mirror of https://gitlab.com/Alamantus/Readlebee.git synced 2026-05-29 20:27:19 +02:00

Compare commits

...

2 commits

6 changed files with 60 additions and 9 deletions

3
.gitignore vendored
View file

@ -7,4 +7,5 @@ dev/
**/*.log
config.json
*.sqlite*
*.db
*.db
.dbversion

View file

@ -14,6 +14,7 @@
"build": "npm run process-images && npm run bundle",
"bundle": "parcel build app/index.html --out-dir public --no-source-maps --no-cache",
"process-images": "node ./process-images.js",
"setup-db": "node ./server/sequelize/setup-database.js",
"clear": "rimraf public/{*,.*}"
},
"devDependencies": {

View file

@ -102,5 +102,5 @@ fastify.listen(fastify.siteConfig.port, function (err, address) {
}
fastify.decorate('canEmail', typeof fastify.nodemailer !== 'undefined');
fastify.decorate('models', require('./getSequelizeModels')(fastify.sequelize));
fastify.decorate('models', require('./sequelize/getModels')(fastify.sequelize));
});

View file

@ -1,6 +1,6 @@
const Sequelize = require('sequelize');
function getSequelizeModels (sequelize) {
function getModels (sequelize) {
const User = sequelize.define('user', {
id: {
type: Sequelize.INTEGER,
@ -360,4 +360,4 @@ function getSequelizeModels (sequelize) {
}
}
module.exports = getSequelizeModels;
module.exports = getModels;

View file

@ -0,0 +1,16 @@
const path = require('path');
const fs = require('fs');
const dbVersion = '0.0.0';
function migrateDb(oldVersion, sequelize) {
// if (oldVersion < targetVersion) {
// migrate db here
// }
return sequelize;
}
module.exports = {
dbVersion,
migrateDb,
};

View file

@ -1,12 +1,13 @@
// Eventually, I'd like this to be run through Commander so it can confirm things before just overwriting stuff.
const path = require('path');
const Sequelize = require('sequelize');
const getSequelizeModels = require('./server/getSequelizeModels');
const fs = require('fs');
const force = typeof process.argv[2] !== 'undefined' && process.argv[2] === 'force';
const Sequelize = require('sequelize');
let siteConfig;
try {
siteConfig = require('./server/config.json');
siteConfig = require('../config.json');
} catch (ex) {
console.error('Please copy `config.example.json` to `config.json` and fill it with your server\'s data.');
process.exit(1);
@ -37,9 +38,34 @@ switch (siteConfig.db_engine) {
const sequelize = new Sequelize(sequelizeConfig);
const Models = getSequelizeModels(sequelize);
const migration = require('./migration');
const dbVersionPath = path.resolve(__dirname, './.dbversion');
if (!force) {
if (fs.existsSync(dbVersionPath)) {
const installedDbVersion = fs.readFileSync(dbVersionPath);
if (installedDbVersion < migration.dbVersion) {
console.log(`Migrating from ${installedDbVersion} to ${migration.dbVersion}...`);
migration.migrateDb(installedDbVersion, sequelize);
return fs.writeFile(dbVersionPath, migration.dbVersion, err => {
if (err) {
console.error(err);
}
console.log('Migration complete!');
});
}
if (installedDbVersion == migration.dbVersion) {
return console.log(`No database setup needed: installed version ${installedDbVersion} is the current version.`);
}
console.log(`Skipping database migration: installed version ${installedDbVersion} is not less than current version ${migration.dbVersion}.`);
return console.log('Please check your installation and make sure you have the right server files downloaded.');
}
}
const Models = require('./getModels')(sequelize);
console.log(`Installing database tables${force ? ', dropping existing ones first' : ''}...`);
sequelize.sync({ force }).then(() => {
console.log('Tables installed! Adding Status Types...')
const promises = [ // Default status types to use in Statuses
{ name: 'update' },
{ name: 'progress' },
@ -49,4 +75,11 @@ sequelize.sync({ force }).then(() => {
return Promise.all(promises);
}).then(() => {
sequelize.close();
});
console.log(`Status Types installed! Writing database version to ${dbVersionPath}...`);
fs.writeFile(dbVersionPath, migration.dbVersion, err => {
if (err) {
console.error(err);
}
console.log('Done!');
});
});