from flask import Blueprint, jsonify from flask_mysqldb import MySQL from .auth import token_required servicos = Blueprint('servicos', __name__) mysql = MySQL() # Instância do MySQL será configurada no app principal @servicos.route('/servicos', methods=['GET']) @token_required def listar_servicos(data): try: domain = data.get('domain', '') # Obtém o domínio do usuário do token if not domain: return jsonify({"status": "error", "message": "Usuário não autenticado!"}), 401 # Conecta ao banco de dados e consulta os serviços cur = mysql.connection.cursor() query = """ SELECT `servico1`, `servico2`, `servico3`, `servico4`, `servico5`, `servico6`, `servico9`, `servico12` FROM `servicos` WHERE `dominio` = %s """ cur.execute(query, (domain,)) results = cur.fetchall() cur.close() # Verificando se resultados foram retornados if results: # Quando a consulta retorna uma tupla com dicionário, acessamos o primeiro item da tupla row = results[0] # A primeira linha é um dicionário servicos_prestados = { "servico1": row.get('servico1') if row.get('servico1') is not None else None, "servico2": row.get('servico2') if row.get('servico2') is not None else None, "servico3": row.get('servico3') if row.get('servico3') is not None else None, "servico4": row.get('servico4') if row.get('servico4') is not None else None, "servico5": row.get('servico5') if row.get('servico5') is not None else None, "servico6": row.get('servico6') if row.get('servico6') is not None else None, "servico9": row.get('servico9') if row.get('servico9') is not None else None, "servico12": row.get('servico12') if row.get('servico12') is not None else None, } # Removendo serviços com valor None servicos_prestados = {k: v for k, v in servicos_prestados.items() if v is not None} if servicos_prestados: return jsonify(servicos_prestados), 200 else: return jsonify({"erro": "Nenhum serviço disponível"}), 404 else: return jsonify({"erro": "Nenhum serviço encontrado"}), 404 except Exception as e: print(f"Erro interno: {e}") # Print detalhado do erro return jsonify({"status": "error", "message": "Erro interno"}), 500