feat: add mongo index

This commit is contained in:
suxiaoxin 2017-08-23 16:11:43 +08:00
parent 7fe29ba83c
commit 92d603db35
6 changed files with 220 additions and 19 deletions

View File

@ -3,10 +3,12 @@ import yapi from './yapi.js';
import commons from './utils/commons'; import commons from './utils/commons';
import dbModule from './utils/db.js'; import dbModule from './utils/db.js';
import userModel from './models/user.js'; import userModel from './models/user.js';
import mongoose from 'mongoose';
yapi.commons = commons; yapi.commons = commons;
yapi.connect = dbModule.connect(); yapi.connect = dbModule.connect();
function install() { function install() {
let exist = yapi.commons.fileExist(yapi.path.join(yapi.WEBROOT_RUNTIME, 'init.lock')); let exist = yapi.commons.fileExist(yapi.path.join(yapi.WEBROOT_RUNTIME, 'init.lock'));
@ -31,14 +33,109 @@ function setupSql() {
up_time: yapi.commons.time() up_time: yapi.commons.time()
}); });
result.then(function () { yapi.connect.then(function () {
fs.ensureFileSync(yapi.path.join(yapi.WEBROOT_RUNTIME, 'init.lock')); let userCol = mongoose.connection.db.collection('user')
console.log(`初始化管理员账号 "${yapi.WEBCONFIG.adminAccount}" 成功`); // eslint-disable-line userCol.ensureIndex({
process.exit(0); username: 1
}, function (err) { })
console.log(`初始化管理员账号 "${yapi.WEBCONFIG.adminAccount}" 失败, ${err.message}`); // eslint-disable-line userCol.ensureIndex({
process.exit(0); email: 1
}); }, {
unique: true
})
let projectCol = mongoose.connection.db.collection('project')
projectCol.ensureIndex({
uid: 1
})
projectCol.ensureIndex({
name: 1
})
projectCol.ensureIndex({
group_id: 1
})
let logCol = mongoose.connection.db.collection('log')
logCol.ensureIndex({
uid: 1
})
logCol.ensureIndex({
typeid: 1,
type: 1
})
let interfaceColCol = mongoose.connection.db.collection('interface_col')
interfaceColCol.ensureIndex({
uid: 1
})
interfaceColCol.ensureIndex({
project_id: 1
})
let interfaceCatCol = mongoose.connection.db.collection('interface_cat')
interfaceCatCol.ensureIndex({
uid: 1
})
interfaceCatCol.ensureIndex({
project_id: 1
})
let interfaceCaseCol = mongoose.connection.db.collection('interface_case')
interfaceCaseCol.ensureIndex({
uid: 1
})
interfaceCaseCol.ensureIndex({
col_id: 1
})
interfaceCaseCol.ensureIndex({
project_id: 1
})
let interfaceCol = mongoose.connection.db.collection('interface')
interfaceCol.ensureIndex({
uid: 1
})
interfaceCol.ensureIndex({
path: 1,
method: 1
})
interfaceCol.ensureIndex({
project_id: 1
})
let groupCol = mongoose.connection.db.collection('group')
groupCol.ensureIndex({
uid: 1
})
groupCol.ensureIndex({
group_name: 1
})
let avatarCol = mongoose.connection.db.collection('avatar')
avatarCol.ensureIndex({
uid: 1
})
let followCol = mongoose.connection.db.collection('follow')
followCol.ensureIndex({
uid: 1
})
followCol.ensureIndex({
project_id: 1
})
result.then(function () {
fs.ensureFileSync(yapi.path.join(yapi.WEBROOT_RUNTIME, 'init.lock'));
console.log(`初始化管理员账号 "${yapi.WEBCONFIG.adminAccount}" 成功`); // eslint-disable-line
process.exit(0);
}, function (err) {
console.log(`初始化管理员账号 "${yapi.WEBCONFIG.adminAccount}" 失败, ${err.message}`); // eslint-disable-line
process.exit(0);
});
})
} }
install(); install();

View File

@ -15,7 +15,7 @@ class baseModel{
this.schema.plugin(autoIncrement.plugin, { this.schema.plugin(autoIncrement.plugin, {
model: this.name, model: this.name,
field: this.getPrimaryKey(), field: this.getPrimaryKey(),
startAt: 101, startAt: 11,
incrementBy: yapi.commons.rand(1, 10) incrementBy: yapi.commons.rand(1, 10)
}); });
} }

View File

@ -12,7 +12,7 @@ function model(model, schema) {
return yapi.connect.model(model, schema, model); return yapi.connect.model(model, schema, model);
} }
function connect() { function connect(callback) {
mongoose.Promise = global.Promise; mongoose.Promise = global.Promise;
let config = yapi.WEBCONFIG; let config = yapi.WEBCONFIG;
@ -28,6 +28,9 @@ function connect() {
db.then(function () { db.then(function () {
yapi.commons.log('mongodb load success...'); yapi.commons.log('mongodb load success...');
if(typeof callback === 'function'){
callback.call(db)
}
}, function (err) { }, function (err) {
yapi.commons.log(err, 'Mongo connect error'); yapi.commons.log(err, 'Mongo connect error');
}); });
@ -38,6 +41,7 @@ function connect() {
yapi.db = model; yapi.db = model;
module.exports = { module.exports = {
model: model, model: model,
connect: connect connect: connect

View File

@ -20,6 +20,10 @@ var _user = require('./models/user.js');
var _user2 = _interopRequireDefault(_user); var _user2 = _interopRequireDefault(_user);
var _mongoose = require('mongoose');
var _mongoose2 = _interopRequireDefault(_mongoose);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
_yapi2.default.commons = _commons2.default; _yapi2.default.commons = _commons2.default;
@ -49,13 +53,106 @@ function setupSql() {
up_time: _yapi2.default.commons.time() up_time: _yapi2.default.commons.time()
}); });
result.then(function () { _yapi2.default.connect.then(function () {
_fsExtra2.default.ensureFileSync(_yapi2.default.path.join(_yapi2.default.WEBROOT_RUNTIME, 'init.lock')); var userCol = _mongoose2.default.connection.db.collection('user');
console.log('\u521D\u59CB\u5316\u7BA1\u7406\u5458\u8D26\u53F7 "' + _yapi2.default.WEBCONFIG.adminAccount + '" \u6210\u529F'); // eslint-disable-line userCol.ensureIndex({
process.exit(0); username: 1
}, function (err) { });
console.log('\u521D\u59CB\u5316\u7BA1\u7406\u5458\u8D26\u53F7 "' + _yapi2.default.WEBCONFIG.adminAccount + '" \u5931\u8D25, ' + err.message); // eslint-disable-line userCol.ensureIndex({
process.exit(0); email: 1
}, {
unique: true
});
var projectCol = _mongoose2.default.connection.db.collection('project');
projectCol.ensureIndex({
uid: 1
});
projectCol.ensureIndex({
name: 1
});
projectCol.ensureIndex({
group_id: 1
});
var logCol = _mongoose2.default.connection.db.collection('log');
logCol.ensureIndex({
uid: 1
});
logCol.ensureIndex({
typeid: 1,
type: 1
});
var interfaceColCol = _mongoose2.default.connection.db.collection('interface_col');
interfaceColCol.ensureIndex({
uid: 1
});
interfaceColCol.ensureIndex({
project_id: 1
});
var interfaceCatCol = _mongoose2.default.connection.db.collection('interface_cat');
interfaceCatCol.ensureIndex({
uid: 1
});
interfaceCatCol.ensureIndex({
project_id: 1
});
var interfaceCaseCol = _mongoose2.default.connection.db.collection('interface_case');
interfaceCaseCol.ensureIndex({
uid: 1
});
interfaceCaseCol.ensureIndex({
col_id: 1
});
interfaceCaseCol.ensureIndex({
project_id: 1
});
var interfaceCol = _mongoose2.default.connection.db.collection('interface');
interfaceCol.ensureIndex({
uid: 1
});
interfaceCol.ensureIndex({
path: 1,
method: 1
});
interfaceCol.ensureIndex({
project_id: 1
});
var groupCol = _mongoose2.default.connection.db.collection('group');
groupCol.ensureIndex({
uid: 1
});
groupCol.ensureIndex({
group_name: 1
});
var avatarCol = _mongoose2.default.connection.db.collection('avatar');
avatarCol.ensureIndex({
uid: 1
});
var followCol = _mongoose2.default.connection.db.collection('follow');
followCol.ensureIndex({
uid: 1
});
followCol.ensureIndex({
project_id: 1
});
result.then(function () {
_fsExtra2.default.ensureFileSync(_yapi2.default.path.join(_yapi2.default.WEBROOT_RUNTIME, 'init.lock'));
console.log('\u521D\u59CB\u5316\u7BA1\u7406\u5458\u8D26\u53F7 "' + _yapi2.default.WEBCONFIG.adminAccount + '" \u6210\u529F'); // eslint-disable-line
process.exit(0);
}, function (err) {
console.log('\u521D\u59CB\u5316\u7BA1\u7406\u5458\u8D26\u53F7 "' + _yapi2.default.WEBCONFIG.adminAccount + '" \u5931\u8D25, ' + err.message); // eslint-disable-line
process.exit(0);
});
}); });
} }

View File

@ -37,7 +37,7 @@ var baseModel = function () {
this.schema.plugin(_mongooseAutoIncrement2.default.plugin, { this.schema.plugin(_mongooseAutoIncrement2.default.plugin, {
model: this.name, model: this.name,
field: this.getPrimaryKey(), field: this.getPrimaryKey(),
startAt: 101, startAt: 11,
incrementBy: _yapi2.default.commons.rand(1, 10) incrementBy: _yapi2.default.commons.rand(1, 10)
}); });
} }

View File

@ -24,7 +24,7 @@ function model(model, schema) {
return _yapi2.default.connect.model(model, schema, model); return _yapi2.default.connect.model(model, schema, model);
} }
function connect() { function connect(callback) {
_mongoose2.default.Promise = global.Promise; _mongoose2.default.Promise = global.Promise;
var config = _yapi2.default.WEBCONFIG; var config = _yapi2.default.WEBCONFIG;
@ -39,6 +39,9 @@ function connect() {
db.then(function () { db.then(function () {
_yapi2.default.commons.log('mongodb load success...'); _yapi2.default.commons.log('mongodb load success...');
if (typeof callback === 'function') {
callback.call(db);
}
}, function (err) { }, function (err) {
_yapi2.default.commons.log(err, 'Mongo connect error'); _yapi2.default.commons.log(err, 'Mongo connect error');
}); });