correção de doc_tag-routes.

This commit is contained in:
looccasgtr 2025-05-12 17:51:52 -04:00
parent 715dd6e2b9
commit 3b5d5a194f
2 changed files with 79 additions and 15 deletions

View File

@ -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

View File

@ -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/<uuid:tag_id>", 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():
try:
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
@doc_tag_routes.route("/", methods=["GET"])
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():
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": 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)