from flask import Flask, request, jsonify from supabase import create_client, Client from dotenv import load_dotenv import os load_dotenv() app = Flask(__name__) SUPABASE_URL = os.getenv("SUPABASE_URL") SUPABASE_KEY = os.getenv("SUPABASE_KEY") supabase: Client = create_client(SUPABASE_URL, SUPABASE_KEY) TABLE_NAME = "barcodes" # --- CREATE Barcode --- @app.route("/barcodes", methods=["POST"]) def create_barcode(): data = request.json name = data.get("name") code = data.get("code") price = data.get("price") if not all([name, code, price]): return jsonify({"error": "Missing fields"}), 400 result = supabase.table(TABLE_NAME).insert({ "name": name, "code": code, "price": price }).execute() return jsonify(result.data), 201 # --- READ All Barcodes --- @app.route("/barcodes", methods=["GET"]) def get_barcodes(): result = supabase.table(TABLE_NAME).select("*").execute() return jsonify(result.data), 200 # --- READ One Barcode by Code --- @app.route("/barcodes/", methods=["GET"]) def get_barcode(code): result = supabase.table(TABLE_NAME).select("*").eq("code", code).execute() if not result.data: return jsonify({"error": "Barcode not found"}), 404 return jsonify(result.data[0]), 200 # --- UPDATE Barcode --- @app.route("/barcodes/", methods=["PUT"]) def update_barcode(code): data = request.json result = supabase.table(TABLE_NAME).update(data).eq("code", code).execute() if not result.data: return jsonify({"error": "Barcode not found"}), 404 return jsonify(result.data[0]), 200 # --- DELETE Barcode --- @app.route("/barcodes/", methods=["DELETE"]) def delete_barcode(code): result = supabase.table(TABLE_NAME).delete().eq("code", code).execute() if not result.data: return jsonify({"error": "Barcode not found"}), 404 return jsonify({"message": "Deleted successfully"}), 200 # --- Root Route for Testing --- @app.route("/", methods=["GET"]) def home(): return "Barcode API is running" if __name__ == "__main__": app.run(host="0.0.0.0", port=7860)