X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Finitializers%2Fdatabase.js;h=043152a0e33f95ac389f017b97e6cd10487efe43;hb=2d7653dc8726185615bab66353c4e3fb8fbb5a5f;hp=d0d96966399da8dcdf058a57b452a32b05b44582;hpb=00057e85a703713a8f0d96e01c49978be0987eb2;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/initializers/database.js b/server/initializers/database.js index d0d969663..043152a0e 100644 --- a/server/initializers/database.js +++ b/server/initializers/database.js @@ -1,34 +1,77 @@ 'use strict' -const config = require('config') -const mongoose = require('mongoose') +const fs = require('fs') +const path = require('path') +const Sequelize = require('sequelize') +const constants = require('../initializers/constants') const logger = require('../helpers/logger') +const utils = require('../helpers/utils') -// Bootstrap models -require('../models/video') -// Request model needs Video model -require('../models/request') +const database = {} -const dbname = 'peertube' + config.get('database.suffix') -const host = config.get('database.host') -const port = config.get('database.port') +const dbname = constants.CONFIG.DATABASE.DBNAME +const username = constants.CONFIG.DATABASE.USERNAME +const password = constants.CONFIG.DATABASE.PASSWORD -const database = { - connect: connect -} +const sequelize = new Sequelize(dbname, username, password, { + dialect: 'postgres', + host: constants.CONFIG.DATABASE.HOSTNAME, + port: constants.CONFIG.DATABASE.PORT, + benchmark: utils.isTestInstance(), -function connect () { - mongoose.connect('mongodb://' + host + ':' + port + '/' + dbname) - mongoose.connection.on('error', function () { - throw new Error('Mongodb connection error.') - }) + logging: function (message, benchmark) { + let newMessage = message + if (benchmark !== undefined) { + newMessage += ' | ' + benchmark + 'ms' + } - mongoose.connection.on('open', function () { - logger.info('Connected to mongodb.') - }) -} + logger.debug(newMessage) + } +}) + +database.sequelize = sequelize +database.Sequelize = Sequelize +database.init = init // --------------------------------------------------------------------------- module.exports = database + +// --------------------------------------------------------------------------- + +function init (silent, callback) { + if (!callback) { + callback = silent + silent = false + } + + if (!callback) callback = function () {} + + const modelDirectory = path.join(__dirname, '..', 'models') + fs.readdir(modelDirectory, function (err, files) { + if (err) throw err + + files.filter(function (file) { + // For all models but not utils.js + if (file === 'utils.js') return false + + return true + }) + .forEach(function (file) { + const model = sequelize.import(path.join(modelDirectory, file)) + + database[model.name] = model + }) + + Object.keys(database).forEach(function (modelName) { + if ('associate' in database[modelName]) { + database[modelName].associate(database) + } + }) + + if (!silent) logger.info('Database %s is ready.', dbname) + + return callback(null) + }) +}