Explorar o código

refactor SearchService

Yuki Takei %!s(int64=6) %!d(string=hai) anos
pai
achega
fc77421597

+ 7 - 6
src/server/service/search-delegator/elasticsearch.js

@@ -17,8 +17,7 @@ const BULK_REINDEX_SIZE = 100;
 
 
 class ElasticsearchDelegator {
 class ElasticsearchDelegator {
 
 
-  constructor(esUri, configManager, searchEvent) {
-    this.esUri = esUri;
+  constructor(configManager, searchEvent) {
     this.configManager = configManager;
     this.configManager = configManager;
     this.searchEvent = searchEvent;
     this.searchEvent = searchEvent;
 
 
@@ -63,7 +62,7 @@ class ElasticsearchDelegator {
   }
   }
 
 
   initClient() {
   initClient() {
-    const { host, httpAuth, indexName } = this.parseUri();
+    const { host, httpAuth, indexName } = this.getConnectionInfo();
     this.client = new elasticsearch.Client({
     this.client = new elasticsearch.Client({
       host,
       host,
       httpAuth,
       httpAuth,
@@ -74,15 +73,17 @@ class ElasticsearchDelegator {
   }
   }
 
 
   /**
   /**
-   * parse `this.esUri` and return information object to connect to ES
+   * return information object to connect to ES
    * @return {object} { host, httpAuth, indexName}
    * @return {object} { host, httpAuth, indexName}
    */
    */
-  parseUri() {
+  getConnectionInfo() {
     let indexName = 'crowi';
     let indexName = 'crowi';
     let host = this.esUri;
     let host = this.esUri;
     let httpAuth = '';
     let httpAuth = '';
 
 
-    const url = new URL(this.esUri);
+    const elasticsearchUri = this.configManager.getConfig('crowi', 'app:elasticsearchUri');
+
+    const url = new URL(elasticsearchUri);
     if (url.pathname !== '/') {
     if (url.pathname !== '/') {
       host = `${url.protocol}//${url.host}`;
       host = `${url.protocol}//${url.host}`;
       indexName = url.pathname.substring(1); // omit heading slash
       indexName = url.pathname.substring(1); // omit heading slash

+ 12 - 10
src/server/service/search.js

@@ -24,26 +24,28 @@ class SearchService {
     return this.delegator != null;
     return this.delegator != null;
   }
   }
 
 
-  initDelegator() {
-    logger.info('Initializing search delegator');
+  get isSearchboxEnabled() {
+    return this.configManager.getConfig('crowi', 'app:searchboxSslUrl') != null;
+  }
 
 
-    const esUri = this.configManager.getConfig('crowi', 'app:elasticsearchUri');
-    const sbUrl = this.configManager.getConfig('crowi', 'app:searchboxSslUrl');
+  get isElasticsearchEnabled() {
+    return this.configManager.getConfig('crowi', 'app:elasticsearchUri') != null;
+  }
 
 
-    const isSearchboxEnabled = sbUrl != null;
-    const isElasticsearchEnabled = esUri != null;
+  initDelegator() {
+    logger.info('Initializing search delegator');
 
 
     const searchEvent = this.crowi.event('search');
     const searchEvent = this.crowi.event('search');
 
 
-    if (isSearchboxEnabled) {
+    if (this.isSearchboxEnabled) {
       logger.info('Searchbox is enabled');
       logger.info('Searchbox is enabled');
       const SearchboxDelegator = require('./search-delegator/searchbox.js');
       const SearchboxDelegator = require('./search-delegator/searchbox.js');
-      return new SearchboxDelegator(sbUrl, this.configManager, searchEvent);
+      return new SearchboxDelegator(this.configManager, searchEvent);
     }
     }
-    if (isElasticsearchEnabled) {
+    if (this.isElasticsearchEnabled) {
       logger.info('Elasticsearch (not Searchbox) is enabled');
       logger.info('Elasticsearch (not Searchbox) is enabled');
       const ElasticsearchDelegator = require('./search-delegator/elasticsearch.js');
       const ElasticsearchDelegator = require('./search-delegator/elasticsearch.js');
-      return new ElasticsearchDelegator(esUri, this.configManager, searchEvent);
+      return new ElasticsearchDelegator(this.configManager, searchEvent);
     }
     }
 
 
   }
   }