from .. import db
from ..decorators import background
from ..models import Corpus, CorpusFile, QueryResult


@background
def build_corpus(corpus_id, *args, **kwargs):
    app = kwargs['app']
    with app.app_context():
        corpus = Corpus.query.get(corpus_id)
        if corpus is None:
            raise Exception('Corpus {} not found'.format(corpus_id))
        corpus.build()
        db.session.commit()


@background
def delete_corpus(corpus_id, *args, **kwargs):
    with kwargs['app'].app_context():
        corpus = Corpus.query.get(corpus_id)
        if corpus is None:
            raise Exception('Corpus {} not found'.format(corpus_id))
        corpus.delete()
        db.session.commit()


@background
def delete_corpus_file(corpus_file_id, *args, **kwargs):
    with kwargs['app'].app_context():
        corpus_file = CorpusFile.query.get(corpus_file_id)
        if corpus_file is None:
            raise Exception('Corpus file {} not found'.format(corpus_file_id))
        corpus_file.delete()
        db.session.commit()


@background
def delete_query_result(query_result_id, *args, **kwargs):
    with kwargs['app'].app_context():
        query_result = QueryResult.query.get(query_result_id)
        if query_result is None:
            raise Exception('QueryResult {} not found'.format(query_result_id))
        query_result.delete()
        db.session.commit()