| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #!/usr/bin/env node
- // Copyright 2015 The MemDB Authors.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- // implied. See the License for the specific language governing
- // permissions and limitations under the License. See the AUTHORS file
- // for names of contributors.
- 'use strict';
- var minimist = require('minimist');
- var helpContent = '\
- MemDB Index Builder\n\n\
- Usage: memdbindex [rebuild | drop] [options]\n\
- Options:\n\
- -c, --conf path Config file path\n\
- -t, --coll collection Collection name\n\
- -k, --keys key1.key2 Index keys (split with ".")\n';
- var getIndexOpts = function(conf, collName, keys){
- var indexes = conf.collections && conf.collections[collName] && conf.collections[collName].indexes;
- if(!indexes){
- return null;
- }
- for(var i in indexes){
- var index = indexes[i];
- if(JSON.stringify(index.keys.sort()) === JSON.stringify(keys.sort())){
- return index;
- }
- }
- return null;
- };
- if (require.main === module){
- var argv = minimist(process.argv.slice(3));
- var cmd = process.argv[2];
- if(process.argv.length <= 3 || argv.help || argv.h){
- console.log(helpContent);
- process.exit(0);
- }
- var config = require('../app/config');
- config.init(argv.conf || argv.c);
- var conf = config.shardConfig(config.getShardIds()[0]);
- var collName = argv.coll || argv.t;
- if(!collName){
- throw new Error('collection not specified');
- }
- var keys = argv.keys || argv.k;
- if(!keys){
- throw new Error('keys not specified');
- }
- keys = keys.split('.').sort();
- var indexbuilder = require('../app/indexbuilder');
- if(cmd === 'rebuild'){
- var opts = getIndexOpts(conf, collName, keys);
- if(!opts){
- throw new Error('specified index is not configured');
- }
- indexbuilder.rebuild(conf, collName, keys, opts);
- }
- else if(cmd === 'drop'){
- indexbuilder.drop(conf, collName, keys);
- }
- else{
- throw new Error('invalid cmd - ' + cmd);
- }
- }
|