123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- const _ = require('lodash')
- const autoload = require('auto-load')
- const path = require('path')
- const Promise = require('bluebird')
- const Knex = require('knex')
- const Objection = require('objection')
- /* global WIKI */
- /**
- * PostgreSQL DB module
- */
- module.exports = {
- Objection,
- knex: null,
- /**
- * Initialize DB
- *
- * @return {Object} DB instance
- */
- init() {
- let self = this
- let dbClient = null
- const dbConfig = (!_.isEmpty(process.env.WIKI_DB_CONNSTR)) ? process.env.WIKI_DB_CONNSTR : {
- host: WIKI.config.db.host,
- user: WIKI.config.db.user,
- password: WIKI.config.db.pass,
- database: WIKI.config.db.db,
- port: WIKI.config.db.port,
- filename: WIKI.config.db.storage
- }
- switch (WIKI.config.db.type) {
- case 'postgres':
- dbClient = 'pg'
- break
- case 'mysql':
- dbClient = 'mysql2'
- break
- case 'mssql':
- dbClient = 'mssql'
- break
- case 'sqlite':
- dbClient = 'sqlite3'
- break
- default:
- WIKI.logger.error('Invalid DB Type')
- process.exit(1)
- }
- this.knex = Knex({
- client: dbClient,
- useNullAsDefault: true,
- connection: dbConfig,
- debug: WIKI.IS_DEBUG
- })
- Objection.Model.knex(this.knex)
- // Load DB Models
- const models = autoload(path.join(WIKI.SERVERPATH, 'db/models'))
- // Set init tasks
- let initTasks = {
- // -> Migrate DB Schemas
- async syncSchemas() {
- return self.knex.migrate.latest({
- directory: path.join(WIKI.SERVERPATH, 'db/migrations'),
- tableName: 'migrations'
- })
- },
- // -> Set Connection App Name
- async setAppName() {
- switch (WIKI.config.db.type) {
- case 'postgres':
- return self.knex.raw(`set application_name = 'Wiki.js'`)
- }
- }
- }
- let initTasksQueue = (WIKI.IS_MASTER) ? [
- initTasks.syncSchemas,
- initTasks.setAppName
- ] : [
- initTasks.setAppName
- ]
- // Perform init tasks
- this.onReady = Promise.each(initTasksQueue, t => t()).return(true)
- return {
- ...this,
- ...models
- }
- }
- }
|