# -*- coding: utf-8 -*-
# copyright 2016 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
# contact http://www.logilab.fr -- mailto:contact@logilab.fr
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the Free
# Software Foundation, either version 2.1 of the License, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
# details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

INDEXABLE_TYPES = None


def index_settings():
    return {'analysis':
            {'analyzer':
             {'default': {'filter': ['standard',
                                     'my_ascii_folding',
                                     'lowercase',
                                     'french_snowball'],
                          'tokenizer': 'standard'}},
             'filter': {'my_ascii_folding': {'preserve_original': True,
                                             'type': 'asciifolding'},
                        'french_snowball': {'type': 'snowball',
                                            'language': 'French'}
                        }
             }
            ,
            "mappings" : {
                "Did" : {
                    "properties" : {
                        "unitid" : {
                            "type" : "string",
                            "index" : "not_analyzed" 
                        }
                    }
                }
            }

    }

def indexable_types(schema):
    global INDEXABLE_TYPES
    if INDEXABLE_TYPES is not None:
        return INDEXABLE_TYPES
    indexable_types = []
    skip_list = ('TrInfo', 'EmailAddress')
    for eschema in schema.entities():
        if eschema.type in skip_list:
            continue
        if not eschema.final:
            # check eschema.fulltext_relations() ? (skip wf_info_for ?
            # )
            if list(eschema.indexable_attributes()):
                indexable_types.append(eschema.type)
    INDEXABLE_TYPES = indexable_types
    return indexable_types