from flask import Blueprint, jsonify, request, current_app from utils.data_loader import load_data from utils.json_crud import load_json, save_json, add_entry, delete_entry, update_entry from models.service_model import ServiceModel import os DATA_DIR = os.path.join(os.path.dirname(__file__), '../data') SERVICES_FILE = os.path.join(DATA_DIR, 'services.json') services_bp = Blueprint('services', __name__, url_prefix='/api/services') @services_bp.route('/', methods=['GET']) def get_services(): services = load_data('services.json') return jsonify(services) @services_bp.route('/', methods=['GET']) def get_service(service_id): services = load_data('services.json') service = next((s for s in services if str(s.get('id')) == str(service_id)), None) if not service: return jsonify({"error": "Service not found"}), 404 return jsonify(service) @services_bp.route('/', methods=['POST']) def create_service(): key = request.headers.get('x-api-key') if key != current_app.config['API_KEY']: return jsonify({"error": "Unauthorized"}), 401 services = load_json(SERVICES_FILE) entry = request.json or {} # generate new id new_id = max((s.get('id') for s in services), default=0) + 1 model = ServiceModel({**entry, 'id': new_id}) data = model.to_dict() added = add_entry(SERVICES_FILE, data) return jsonify(added), 201 @services_bp.route('/', methods=['PUT', 'PATCH']) def update_service(service_id): key = request.headers.get('x-api-key') if key != current_app.config['API_KEY']: return jsonify({"error": "Unauthorized"}), 401 services = load_json(SERVICES_FILE) service = next((s for s in services if str(s.get('id')) == str(service_id)), None) if not service: return jsonify({"error": "Service not found"}), 404 payload = request.json or {} updated = {**service, **payload} updated['id'] = service['id'] saved = update_entry(SERVICES_FILE, updated['id'], updated) return jsonify(saved), 200 @services_bp.route('/', methods=['DELETE']) def delete_service(service_id): key = request.headers.get('x-api-key') if key != current_app.config['API_KEY']: return jsonify({"error": "Unauthorized"}), 401 services = load_json(SERVICES_FILE) service = next((s for s in services if str(s.get('id')) == str(service_id)), None) if not service: return jsonify({"error": "Service not found"}), 404 deleted = delete_entry(SERVICES_FILE, service_id) return jsonify(deleted), 200