from flask import Flask, render_template
from flask.json import jsonify
from flask_cors import CORS

from src.analyser import get_all_statistics, get_all_wikidata_infos, get_all_dbpedia_infos, get_wikidata_triple_info, \
    get_dbpedia_triple_info, get_coreferences_triple_info
from src.main import assemble_wikidata_groundtruth_english, assemble_dbpedia_groundtruth_english, \
    assemble_wikidata_triples, \
    assemble_dbpedia_triples, assemble_similarity_triples, \
    assemble_wikidata_groundtruth_english_advanced

app = Flask(__name__, template_folder='.')

# Todo: Füge die Routen zusammen
# Todo: Checke, ob alle Infos/Pfade/Properties stimmen
# Todo: Richte noch eine Übersicht ein.

@app.route('/lazy/statistics')  # slow
def statistics():
    return jsonify(get_all_statistics())


@app.route('/coreferences')
def coreferences():
    return jsonify(assemble_similarity_triples())


@app.route('/coreferences/info')
def coreferences_info():
    return jsonify(get_coreferences_triple_info())


@app.route('/dbpedia/groundtruth')
def dbpedia_groundtruth():
    return jsonify(assemble_dbpedia_groundtruth_english())


@app.route('/dbpedia/groundtruth/info')
def dbpedia_info():
    return jsonify(get_all_dbpedia_infos())


@app.route('/dbpedia/n3')
def dbpedia_n3():
    return jsonify(assemble_dbpedia_triples())


@app.route('/dbpedia/n3/info')
def dbpedia_n3_info():
    return jsonify(get_dbpedia_triple_info())


@app.route('/wikidata/groundtruth')
def wikidata_groundtruth():
    return jsonify(assemble_wikidata_groundtruth_english())


@app.route('/wikidata/groundtruth/advanced')
def wikidata_groundtruth_advanced():
    return jsonify(assemble_wikidata_groundtruth_english_advanced())


@app.route('/wikidata/groundtruth/info')
def wikidata_info():
    return jsonify(get_all_wikidata_infos())


@app.route('/wikidata/n3')
def wikidata_n3():
    return jsonify(assemble_wikidata_triples())


@app.route('/wikidata/n3/info')
def wikidata_n3_info():
    return jsonify(get_wikidata_triple_info())


@app.route('/')
def swagger():
    return render_template('doc/swagger-ui/' + 'index.html')


if __name__ == '__main__':
    app.run()