from flask import request, jsonify
from db_config import get_db_connection

def get_all_equipments():
    try:
        conn = get_db_connection()
        cursor = conn.cursor(dictionary=True)
        cursor.execute("SELECT id, name, description FROM equipments ORDER BY name ASC")
        equipments = cursor.fetchall()
        cursor.close()
        conn.close()
        return jsonify(equipments)
    except Exception as e:
        return jsonify({"error": str(e)}), 500


def create_equipment():
    try:
        data = request.json
        name = data.get("name")
        description = data.get("description")

        if not name or not description:
            return jsonify({"error": "Missing name or description"}), 400

        conn = get_db_connection()
        cursor = conn.cursor()
        cursor.execute(
            "INSERT INTO equipments (name, description) VALUES (%s, %s)",
            (name, description)
        )
        conn.commit()
        cursor.close()
        conn.close()
        return jsonify({"status": "Equipment created"}), 201
    except Exception as e:
        return jsonify({"error": str(e)}), 500


def delete_equipment():
    try:
        data = request.json
        name = data.get("name")
        equipment_id = data.get("id")

        if not name and not equipment_id:
            return jsonify({"error": "Provide either name or id to delete"}), 400

        conn = get_db_connection()
        cursor = conn.cursor()

        if name:
            cursor.execute("DELETE FROM equipments WHERE name = %s", (name,))
        else:
            cursor.execute("DELETE FROM equipments WHERE id = %s", (equipment_id,))

        conn.commit()
        cursor.close()
        conn.close()
        return jsonify({"status": "Equipment deleted"}), 200
    except Exception as e:
        return jsonify({"error": str(e)}), 500


def update_equipment_field():
    try:
        data = request.json
        equipment_id = data.get("id")
        field = data.get("field")
        value = data.get("value")

        if not equipment_id or not field or value is None:
            return jsonify({"error": "Missing id, field or value"}), 400

        if field not in ["name", "description"]:
            return jsonify({"error": "Invalid field"}), 400

        conn = get_db_connection()
        cursor = conn.cursor()
        cursor.execute(f"UPDATE equipments SET {field} = %s WHERE id = %s", (value, equipment_id))
        conn.commit()
        cursor.close()
        conn.close()
        return jsonify({"status": "Equipment updated"}), 200
    except Exception as e:
        return jsonify({"error": str(e)}), 500
