from flask import Flask, render_template, request, jsonify import os import sqlite3 app = Flask(__name__) # Init database DB_PATH = 'hseq_kennisbank.db' def get_db(): conn = sqlite3.connect(DB_PATH) conn.row_factory = sqlite3.Row return conn # Simpele paginas @app.route('/') def index(): conn = get_db() docs = conn.execute('SELECT * FROM documents ORDER BY id DESC LIMIT 10').fetchall() categories = conn.execute('SELECT category, COUNT(*) FROM documents GROUP BY category').fetchall() conn.close() return render_template('index.html', total_docs=len(docs), categories=categories, recent_docs=docs) @app.route('/search') def search(): query = request.args.get('q', '') category = request.args.get('category', '') if not query and not category: return render_template('search.html', results=[], query=query, category=category) conn = get_db() sql = 'SELECT * FROM documents WHERE 1=1' params = [] if query: sql += ' AND (title LIKE ? OR full_text LIKE ?)' params.extend([f'%{query}%', f'%{query}%']) if category: sql += ' AND category = ?' params.append(category) sql += ' ORDER BY id DESC LIMIT 50' results = conn.execute(sql, params).fetchall() conn.close() return render_template('search.html', results=results, query=query, category=category) @app.route('/api/stats') def api_stats(): conn = get_db() total = conn.execute('SELECT COUNT(*) FROM documents').fetchone()[0] cats = conn.execute('SELECT category, COUNT(*) FROM documents GROUP BY category ORDER BY COUNT(*) DESC').fetchall() conn.close() return jsonify({ 'total_documents': total, 'categories': [dict(c) for c in cats] }) if __name__ == '__main__': app.run(host='0.0.0.0', port=5052, debug=True)