import crud import logging from flask import jsonify, request from filters import AddressPage def main(): """ ```fission { "name": "address-users-insert-get", "http_triggers": { "address-users-insert-get-http": { "url": "/ailbl/users/addresses", "methods": ["POST", "GET"] } } } ``` """ try: if request.method == "POST": return make_insert_request() elif request.method == "GET": return make_get_request() else: return {"error": "Method not allow"}, 405 except Exception as ex: return jsonify({"error": str(ex)}), 500 def make_insert_request(): try: user_id = request.headers.get("X-User") # Lấy user_id từ header X-User if not user_id: return jsonify({"error": "user_id is required"}), 400 data = request.get_json() # Lấy dữ liệu từ body request if not data: return jsonify({"error": "Address data is required"}), 400 address = data.get("address") if not address: return jsonify({"error": "Address is required"}), 400 # Kiểm tra nếu địa chỉ đã tồn tại cho người dùng này if crud.exists_address_for_post(user_id, address): return jsonify({"error": "Address already exists for this user"}), 409 # Tạo mới địa chỉ người dùng response, status = crud.create_address(user_id, data) return jsonify(response), status except Exception as e: return jsonify({"error": str(e)}), 500 def make_get_request(): try: user_id = request.headers.get("X-User") if not user_id: return jsonify({"error": "user_id is required"}), 400 # Lấy tham số filter và phân trang từ request # Sử dụng AddressPage để lấy filter và phân trang paging = AddressPage.from_request_queries() print(paging) # Gọi hàm CRUD để lấy danh sách địa chỉ của user_id với phân trang và lọc response = crud.filter_address(user_id, paging) return jsonify( response, ), 200 # Kiểm tra xem response có dữ liệu không # if not response[0]: # Nếu không có dữ liệu # return jsonify({"message": "No addresses found"}), 404 # return jsonify({ # "data": response[0], # Dữ liệu (danh sách các địa chỉ) # "status": response[1], # Mã trạng thái HTTP (200) # "headers": response[2] # Headers CORS # }), response[1], response[2] except Exception as e: return jsonify({"error": str(e)}), 500