mizozobu 6 лет назад
Родитель
Сommit
f63017c203

+ 17 - 0
config/migrate.js

@@ -5,6 +5,22 @@
  * @author Yuki Takei <yuki@weseek.co.jp>
  */
 
+require('module-alias/register');
+const models = require('@server/models');
+
+// generate mock crowi object
+const crowi = {
+  event: () => {
+    return { on: () => {} };
+  },
+};
+
+// initialize models
+// access each model with mongoose.models('ModelName')
+Object.keys(models).forEach((key) => {
+  models[key](crowi);
+});
+
 function getMongoUri(env) {
   return env.MONGOLAB_URI // for B.C.
     || env.MONGODB_URI // MONGOLAB changes their env name
@@ -15,6 +31,7 @@ function getMongoUri(env) {
 
 const mongoUri = getMongoUri(process.env);
 const match = mongoUri.match(/^(.+)\/([^/]+)$/);
+
 module.exports = {
   mongoUri,
   mongodb: {

+ 1 - 1
src/migrations/20180926134048-make-email-unique.js

@@ -10,7 +10,7 @@ module.exports = {
     logger.info('Start migration');
     mongoose.connect(config.mongoUri, config.mongodb.options);
 
-    const User = require('@server/models/user')();
+    const User = mongoose.model('User');
 
     // get all users who has 'deleted@deleted' email
     const users = await User.find({ email: 'deleted@deleted' });

+ 2 - 2
src/migrations/20180927102719-init-serverurl.js

@@ -22,7 +22,7 @@ module.exports = {
     logger.info('Apply migration');
     mongoose.connect(config.mongoUri, config.mongodb.options);
 
-    const Config = require('@server/models/config')();
+    const Config = mongoose.model('Config');
 
     // find 'app:siteUrl'
     const siteUrlConfig = await Config.findOne({
@@ -75,7 +75,7 @@ module.exports = {
     logger.info('Undo migration');
     mongoose.connect(config.mongoUri, config.mongodb.options);
 
-    const Config = require('@server/models/config')();
+    const Config = mongoose.model('Config');
 
     // remote 'app:siteUrl'
     await Config.findOneAndDelete({

+ 4 - 4
src/migrations/20181019114028-abolish-page-group-relation.js

@@ -37,8 +37,8 @@ module.exports = {
       return;
     }
 
-    const Page = require('@server/models/page')();
-    const UserGroup = require('@server/models/user-group')();
+    const Page = mongoose.model('Page');
+    const UserGroup = mongoose.model('UserGroup');
 
     // retrieve all documents from 'pagegrouprelations'
     const relations = await db.collection('pagegrouprelations').find().toArray();
@@ -74,8 +74,8 @@ module.exports = {
     logger.info('Undo migration');
     mongoose.connect(config.mongoUri, config.mongodb.options);
 
-    const Page = require('@server/models/page')();
-    const UserGroup = require('@server/models/user-group')();
+    const Page = mongoose.model('Page');
+    const UserGroup = mongoose.model('UserGroup');
 
     // retrieve all Page documents which granted by UserGroup
     const relatedPages = await Page.find({ grant: Page.GRANT_USER_GROUP });

+ 29 - 0
src/migrations/20190618055300-abolish-crowi-classic-auth.js

@@ -0,0 +1,29 @@
+require('module-alias/register');
+const logger = require('@alias/logger')('growi:migrate:make-email-unique');
+
+const mongoose = require('mongoose');
+const config = require('@root/config/migrate');
+
+module.exports = {
+  async up(db, next) {
+    logger.info('Start migration');
+    mongoose.connect(config.mongoUri, config.mongodb.options);
+
+    const Config = mongoose.model('Config');
+
+    // enable passport and delete configs for crowi classic auth
+    await Promise.all([
+      Config.findOneAndUpdateByNsAndKey('crowi', 'security:isEnabledPassport', true),
+      Config.deleteOne({ ns: 'crowi', key: 'google:clientId' }),
+      Config.deleteOne({ ns: 'crowi', key: 'google:clientSecret' }),
+    ]);
+
+    logger.info('Migration has successfully terminated');
+    next();
+  },
+
+  down(db, next) {
+    // do not rollback
+    next();
+  },
+};

+ 0 - 2
src/server/crowi/index.js

@@ -212,8 +212,6 @@ Crowi.prototype.setupSessionConfig = function() {
 // };
 
 Crowi.prototype.setupConfigManager = async function() {
-  this.model('Config', require('../models/config')(this));
-
   const ConfigManager = require('../service/config-manager');
   this.configManager = new ConfigManager(this.model('Config'));
   return this.configManager.loadConfigs();

+ 1 - 0
src/server/models/index.js

@@ -1,4 +1,5 @@
 module.exports = {
+  Config: require('./Config'),
   Page: require('./page'),
   PageTagRelation: require('./page-tag-relation'),
   User: require('./user'),