from distribution.models.feed import FeedItem
from elasticsearch.helpers import scan


def update_schema():
    actions = []

    generator = scan(FeedItem.manager.backend.client,
                     {},
                     index=FeedItem.manager.backend.INDEX,
                     doc_type=FeedItem.manager.doc_type,
                     raise_on_error=False)

    for key in generator:
        key['_source']['id'] = "{}:{}".format(key['_source']['meta']['domain'], key['_source']['pointer']['id'])
        key['_source']['content_type'] = key['_source']['pointer']['content_type']
        key['_source']['uri'] = key['_source']['pointer']['uri']
        del key['_source']['pointer']
        key['_source']['meta']['last_update'] = key['_source']['meta']['lastUpdate']
        del key['_source']['meta']['lastUpdate']
        key['_source']['language'] = "en-US"
        key['_source']['extra_fields'] = {
            'photo': {
                'exif': key['_source']['exif'],
                'location': key['_source']['location'],
                'sizes': key['_source']['sizes'],
            }
        }
        del key['_source']['exif']
        del key['_source']['location']
        del key['_source']['sizes']

        actions.append({'_op_type': 'index',
                        '_index': FeedItem.manager.backend.INDEX,
                        '_type': FeedItem.manager.doc_type,
                        '_id': key['_id'],
                        '_source': key['_source']})

    FeedItem.manager.backend.bulk(actions)

if __name__ == "__main__":
    update_schema()
