export default function search()

in app/addons/search/reducers.js [175:331]


export default function search(state = initialState, action) {
  const options = action.options;
  switch (action.type) {

    case ActionTypes.SEARCH_INDEX_SET_LOADING:
      return {
        ...state,
        loading: options.loading
      };

    case ActionTypes.SEARCH_INDEX_DESIGN_DOCS_LOADED:
      const newState = {
        ...state,
        loading: false,
        designDocs: options.designDocs,
        database: options.database,
        ...softReset()
      };
      if (options.defaultDDoc) {
        newState.ddocName = '_design/' + options.defaultDDoc;
      }
      return newState;

    case ActionTypes.SEARCH_INDEX_SET_NAME:
      return {
        ...state,
        searchIndexName: options.value
      };

    case ActionTypes.SEARCH_INDEX_SET_ANALYZER_TYPE:
      return {
        ...state,
        analyzerType: options.value
      };

    case ActionTypes.SEARCH_INDEX_SET_SINGLE_ANALYZER:
      return {
        ...state,
        singleAnalyzer: options.analyzer
      };

    case ActionTypes.SEARCH_INDEX_ADD_ANALYZER_ROW:
      return {
        ...state,
        analyzerFields: addAnalyzerRow(state, options)
      };

    case ActionTypes.SEARCH_INDEX_PREVIEW_REQUEST_MADE:
      return {
        ...state,
        hasActiveQuery: true
      };

    case ActionTypes.SEARCH_INDEX_PREVIEW_REQUEST_ERROR:
      return {
        ...state,
        hasActiveQuery: false,
        searchResults: []
      };

    case ActionTypes.SEARCH_INDEX_SET_SEARCH_QUERY:
      return {
        ...state,
        searchQuery: options.query
      };

    case ActionTypes.SEARCH_INDEX_PREVIEW_MODEL_UPDATED:
      return {
        ...state,
        searchResults: options.searchResults,
        hasActiveQuery: false,
        searchPerformed: true
      };

    case ActionTypes.SEARCH_INDEX_REMOVE_ANALYZER_ROW:
      return {
        ...state,
        analyzerFields: removeAnalyzerRowByIndex(state, options.rowIndex)
      };

    case ActionTypes.SEARCH_INDEX_SET_ANALYZER_ROW_FIELD_NAME:
      return {
        ...state,
        analyzerFields: setAnalyzerRowFieldName(state, options)
      };

    case ActionTypes.SEARCH_INDEX_SET_ANALYZER_ROW:
      return {
        ...state,
        analyzerFields: setAnalyzerRow(state, options)
      };

    case ActionTypes.SEARCH_INDEX_SET_DEFAULT_MULTIPLE_ANALYZER:
      return {
        ...state,
        defaultMultipleAnalyzer: options.analyzer
      };

    case ActionTypes.SEARCH_INDEX_INIT_EDIT_SEARCH_INDEX:
      return {
        ...state,
        ...initEditSearch(state, options)
      };

    case ActionTypes.SEARCH_INDEX_SELECT_DESIGN_DOC:
      return {
        ...state,
        ddocName: options.value
      };

    case ActionTypes.SEARCH_INDEX_CLEAR:
      return {
        ...initialState,
        designDocs: new Backbone.Collection()
      };

    case ActionTypes.SEARCH_INDEX_INIT:
      return {
        ...state,
        loading: false,
        databaseName: options.databaseName,
        partitionKey: options.partitionKey,
        ddocName: options.ddocName,
        indexName: options.indexName,
        searchQuery: options.searchQuery,
        searchResults: options.searchQuery === '' ? undefined : state.searchResults,
        noResultsWarning: ''
      };

    case ActionTypes.SEARCH_INDEX_NEW_DESIGN_DOC_NAME_UPDATED:
      return {
        ...state,
        newDesignDocName: options.value
      };

    case ActionTypes.SEARCH_INDEX_NEW_DESIGN_DOC_PARTITONED_UPDATED:
      return {
        ...state,
        newDesignDocPartitioned: options.value
      };

    case ActionTypes.SEARCH_INDEX_PARTITION_PARAM_NOT_SUPPORTED:
      return {
        ...state,
        noResultsWarning: 'The selected index does not support partitions. Switch back to global mode.'
      };

    case ActionTypes.SEARCH_INDEX_PARTITION_PARAM_MANDATORY:
      return {
        ...state,
        noResultsWarning: 'The selected index requires a partition key. Use the selector at the top to enter a partition key.'
      };

    default:
      return state;
  }
}