mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
| 'use strict'
 | |
| 
 | |
| const eachSeries = require('async/eachSeries')
 | |
| const mongoose = require('mongoose')
 | |
| const path = require('path')
 | |
| 
 | |
| const constants = require('./constants')
 | |
| const logger = require('../helpers/logger')
 | |
| 
 | |
| const Application = mongoose.model('Application')
 | |
| 
 | |
| const migrator = {
 | |
|   migrate: migrate
 | |
| }
 | |
| 
 | |
| function migrate (callback) {
 | |
|   Application.loadMongoSchemaVersion(function (err, actualVersion) {
 | |
|     if (err) return callback(err)
 | |
| 
 | |
|     // If there are a new mongo schemas
 | |
|     if (!actualVersion || actualVersion < constants.LAST_MONGO_SCHEMA_VERSION) {
 | |
|       logger.info('Begin migrations.')
 | |
| 
 | |
|       eachSeries(constants.MONGO_MIGRATION_SCRIPTS, function (entity, callbackEach) {
 | |
|         const versionScript = entity.version
 | |
| 
 | |
|         // Do not execute old migration scripts
 | |
|         if (versionScript <= actualVersion) return callbackEach(null)
 | |
| 
 | |
|         // Load the migration module and run it
 | |
|         const migrationScriptName = entity.script
 | |
|         logger.info('Executing %s migration script.', migrationScriptName)
 | |
| 
 | |
|         const migrationScript = require(path.join(__dirname, 'migrations', migrationScriptName))
 | |
|         migrationScript.up(function (err) {
 | |
|           if (err) return callbackEach(err)
 | |
| 
 | |
|           // Update the new mongo version schema
 | |
|           Application.updateMongoSchemaVersion(versionScript, callbackEach)
 | |
|         })
 | |
|       }, function (err) {
 | |
|         if (err) return callback(err)
 | |
| 
 | |
|         logger.info('Migrations finished. New mongo version schema: %s', constants.LAST_MONGO_SCHEMA_VERSION)
 | |
|         return callback(null)
 | |
|       })
 | |
|     } else {
 | |
|       return callback(null)
 | |
|     }
 | |
|   })
 | |
| }
 | |
| 
 | |
| // ---------------------------------------------------------------------------
 | |
| 
 | |
| module.exports = migrator
 | |
| 
 |