Files
HangmanLab.Backend/api/log.py
2025-03-17 13:54:53 +00:00

45 lines
1.5 KiB
Python

#api/log.py
from flask import Blueprint, jsonify, request
from db import get_db
from db.models.Log import Log
from db.utils import insert_log
logs_bp = Blueprint('log', __name__, url_prefix='/api/log')
@logs_bp.route('/', methods=['GET'])
def get_logs():
level = request.args.get('level')
application = request.args.get('application')
page = int(request.args.get('page', 1))
per_page = int(request.args.get('per_page', 10))
with get_db() as session:
query = session.query(Log)
if level:
query = query.filter(Log.level == level)
if application:
query = query.filter(Log.application == application)
total_logs = query.count()
logs = query.order_by(Log.timestamp.desc()).offset((page - 1)*per_page).limit(per_page).all()
return jsonify({
"total": total_logs,
"page": page,
"per_page": per_page,
"logs": [log.to_dict() for log in logs]
})
@logs_bp.route('/', methods=['POST'])
def create_log():
data = request.json
required_fields = ['level', 'message']
for field in required_fields:
if field not in data:
return jsonify({"error": f"missing {field} in request"}), 400
level = data.get('level')
message = data.get('message')
application = "frontend"
extra = data.get('extra', None)
log_entry = Log(level=level, message=message, application=application, extra=extra)
insert_log(log_entry)
return jsonify({"message": "log created"}), 201