From 6b45f7afcb54b9021ff75f8b6e05dbabba15e4d6 Mon Sep 17 00:00:00 2001 From: looccasgtr Date: Thu, 22 May 2025 20:29:36 -0400 Subject: [PATCH] att --- .../{model-doc_tag.py => model_doc_tag.py} | 8 +- app/routes/doc_tag_routes.py | 73 ++++--------------- 2 files changed, 18 insertions(+), 63 deletions(-) rename app/models/{model-doc_tag.py => model_doc_tag.py} (82%) diff --git a/app/models/model-doc_tag.py b/app/models/model_doc_tag.py similarity index 82% rename from app/models/model-doc_tag.py rename to app/models/model_doc_tag.py index bf6a129..db40038 100644 --- a/app/models/model-doc_tag.py +++ b/app/models/model_doc_tag.py @@ -1,12 +1,10 @@ -from unittest.mock import Base +from app.database import db from sqlalchemy import Column, ForeignKey from sqlalchemy.dialects.postgresql import UUID import uuid -from app.database import db - -class DocTag(Base): - __tablename__ = "doc_tag" +class DocTag(db.Model): + __tablename__ = "doc_tags" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) documento_id = Column(UUID(as_uuid=True), ForeignKey("documento.id"), nullable=False) diff --git a/app/routes/doc_tag_routes.py b/app/routes/doc_tag_routes.py index ddceb2c..b03b222 100644 --- a/app/routes/doc_tag_routes.py +++ b/app/routes/doc_tag_routes.py @@ -1,82 +1,39 @@ -from flask import Flask, request, jsonify -from app.models.model_tag import Tag -from app.models.doc_tag import Doc_Tag +from flask import Blueprint, request, jsonify +from app.models.model_doc_tag import DocTag from app.database import db from sqlalchemy.exc import SQLAlchemyError from uuid import UUID -app = Flask(__name__) +# Criação do Blueprint +doc_tag_bp = Blueprint("doc_tag_routes", __name__) -@app.route("/tags", methods=["POST"]) -def create_tag(): - try: - nome = request.json.get("nome") - if not nome: - return jsonify({"error": "Nome é obrigatório"}), 400 - - existing_tag = Tag.query.filter_by(nome=nome).first() - if existing_tag: - return jsonify({"error": "Nome já está em uso"}), 409 - - new_tag = Tag(nome=nome) - db.session.add(new_tag) - db.session.commit() - return jsonify({"id": new_tag.id, "nome": new_tag.nome}), 201 - - except SQLAlchemyError as e: - db.session.rollback() - return jsonify({"error": "Erro ao criar tag", "details": str(e)}), 500 - -@app.route("/tags", methods=["GET"]) -def list_tags(): - try: - tags = Tag.query.all() - if not tags: - return jsonify({"message": "Nenhuma tag encontrada"}), 404 - - return jsonify([{ "id": tag.id, "nome": tag.nome } for tag in tags]), 200 - - except SQLAlchemyError as e: - return jsonify({"error": "Erro ao listar tags", "details": str(e)}), 500 - -@app.route("/tags/", methods=["DELETE"]) -def delete_tag(tag_id): - try: - tag = Tag.query.get(tag_id) - if not tag: - return jsonify({"error": "Tag não encontrada"}), 404 - - db.session.delete(tag) - db.session.commit() - return jsonify({"message": "Tag deletada com sucesso"}), 200 - - except SQLAlchemyError as e: - db.session.rollback() - return jsonify({"error": "Erro ao deletar tag", "details": str(e)}), 500 - -@app.route("/doc-tags", methods=["POST"]) +@doc_tag_bp.route("/", methods=["POST"], endpoint="create_doc_tag") def create_doc_tag(): try: documento_id = request.json.get("documento_id") tag_id = request.json.get("tag_id") + # Verifica se os IDs são UUID válidos + try: + documento_id = UUID(documento_id) + tag_id = UUID(tag_id) + except ValueError: + return jsonify({"error": "IDs devem ser UUID válidos"}), 400 + new_doc_tag = DocTag(documento_id=documento_id, tag_id=tag_id) db.session.add(new_doc_tag) db.session.commit() - return jsonify({"id": new_doc_tag.id, "documento_id": new_doc_tag.documento_id, "tag_id": new_doc_tag.tag_id}), 201 + return jsonify({"id": new_doc_tag.id, "documento_id": str(new_doc_tag.documento_id), "tag_id": str(new_doc_tag.tag_id)}), 201 except SQLAlchemyError as e: db.session.rollback() return jsonify({"error": "Erro ao criar DocTag", "details": str(e)}), 500 -@app.route("/doc-tags", methods=["GET"]) +@doc_tag_bp.route("/", methods=["GET"], endpoint="list_doc_tags") def list_doc_tags(): try: doc_tags = DocTag.query.all() - return jsonify([{ "id": dt.id, "documento_id": dt.documento_id, "tag_id": dt.tag_id } for dt in doc_tags]), 200 + return jsonify([{ "id": str(dt.id), "documento_id": str(dt.documento_id), "tag_id": str(dt.tag_id) } for dt in doc_tags]), 200 except SQLAlchemyError as e: return jsonify({"error": "Erro ao listar DocTags", "details": str(e)}), 500 - -if __name__ == "__main__": - app.run(debug=True)