# aiva/monitoring.py
from flask import Flask, jsonify
import threading
import time

app = Flask(__name__)

# Initialize metrics
email_retry_count = 0
dlq_size = 0
email_retry_count_lock = threading.Lock()
dlq_size_lock = threading.Lock()


def reset_hourly_metrics():
    global email_retry_count
    with email_retry_count_lock:
        email_retry_count = 0
    threading.Timer(3600, reset_hourly_metrics).start()


# Function to increment email retry count
def increment_email_retry_count():
    global email_retry_count
    with email_retry_count_lock:
        email_retry_count += 1


# Function to increment DLQ size
def increment_dlq_size():
    global dlq_size
    with dlq_size_lock:
        dlq_size += 1


# API endpoint to expose metrics
@app.route('/metrics')
def metrics():
    with email_retry_count_lock:
        retry_count = email_retry_count

    with dlq_size_lock:
        current_dlq_size = dlq_size

    return jsonify({
        'email_retries_per_hour': retry_count,
        'dlq_size': current_dlq_size
    })


# Start the hourly reset timer
reset_hourly_metrics()

if __name__ == '__main__':
    app.run(debug=True, port=5001)