diff --git a/app/__init__.py b/app/__init__.py index 0f30485..7c71453 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -7,6 +7,7 @@ from app.routes.login_form import login_bp from app.routes.dashboard import dashboard_bp from app.routes.invoice_routes import invoice_bp from app.routes.tag_routes import tag_bp +from app.routes.doc_tag_routes import doc_tag_bp from werkzeug.security import generate_password_hash def create_default_user(): @@ -60,4 +61,5 @@ def create_app(): app.register_blueprint(login_bp, url_prefix="/login_bp") app.register_blueprint(dashboard_bp, url_prefix="/dashboard") app.register_blueprint(tag_bp, url_prefix="/tags") + app.register_blueprint(doc_tag_bp, url_prefix="/doc-tags") return app diff --git a/app/routes/doc_tag_routes.py b/app/routes/doc_tag_routes.py index c9798c8..424c792 100644 --- a/app/routes/doc_tag_routes.py +++ b/app/routes/doc_tag_routes.py @@ -1,20 +1,82 @@ -from flask import Blueprint, request, jsonify -from models.doc_tag import DocTag -from models.base import db -import uuid +from flask import Flask, request, jsonify +from app.models.model_tag import Tag +from app.models.doc_tag import DocTag +from app.database import db +from sqlalchemy.exc import SQLAlchemyError +from uuid import UUID -doc_tag_routes = Blueprint("doc_tag_routes", __name__, url_prefix="/doc-tags") +app = Flask(__name__) -@doc_tag_routes.route("/", methods=["POST"]) +@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"]) def create_doc_tag(): - documento_id = request.json.get("documento_id") - tag_id = request.json.get("tag_id") - 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 + try: + documento_id = request.json.get("documento_id") + tag_id = request.json.get("tag_id") -@doc_tag_routes.route("/", methods=["GET"]) + 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 + + except SQLAlchemyError as e: + db.session.rollback() + return jsonify({"error": "Erro ao criar DocTag", "details": str(e)}), 500 + +@app.route("/doc-tags", methods=["GET"]) def list_doc_tags(): - 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 + 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 + + except SQLAlchemyError as e: + return jsonify({"error": "Erro ao listar DocTags", "details": str(e)}), 500 + +if __name__ == "__main__": + app.run(debug=True)