from elasticsearch.helpers import scan

from distribution import app
from distribution.models.feed import FeedItem


def remove_from_query(query):
    actions = []
    generator = scan(FeedItem.manager.backend.client,
                     query,
                     index=app.config.get('ELASTICSEARCH_FEED_INDEX_NAME', 'distribution_feed'),
                     raise_on_error=False)

    for key in generator:
        actions.append({'_op_type': 'delete',
                        '_index': app.config.get('ELASTICSEARCH_FEED_INDEX_NAME',
                                                 'distribution_feed'),
                        '_type': key['_type'],
                        '_id': key['_id']})
    if actions:
        print '-- Executing {} actions to remove automation data'.format(len(actions))
        FeedItem.manager.backend.bulk(actions)


def remove_automation_data_by_id():
    query = {
        "query": {
            "constant_score": {
                "filter": {
                    "term": {
                        "id": "automation"
                    }
                }
            }
        }
    }
    remove_from_query(query)


def remove_automation_data_by_domain():
    query = {
        "query": {
            "constant_score": {
                "filter": {
                    "term": {
                        "meta.domain": "automation"
                    }
                }
            }
        }
    }
    remove_from_query(query)


if __name__ == "__main__":
    remove_automation_data_by_id()
    remove_automation_data_by_domain()
