from flask import Flask, request, jsonify
from flask_cors import CORS
from printingFunctions import printLabel
from threading import Lock

app = Flask(__name__)
CORS(app)

# Global lock for serial access
serial_lock = Lock()

@app.route('/print-label', methods=['POST'])
def handle_data():
    try:
        data = request.get_json()

        # Ensure only one print job uses the serial port at a time
        with serial_lock:
            printLabel(data)

        return jsonify({"message": "Printed received successfully"}), 200
    except Exception as e:
        return jsonify({"error": str(e)}), 500

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5003, debug=False, threaded=True)
