diff --git a/api/controller/neighborhoods.py b/api/controller/neighborhoods.py new file mode 100644 index 0000000..acd209d --- /dev/null +++ b/api/controller/neighborhoods.py @@ -0,0 +1,22 @@ +from flask_cors import cross_origin +from api.util.decorators import required +from api.service.neighborhoods import GetNeighborhoods, PostNeighborhoods +from api import api +from flask_restx import Resource +import api.model.request.neighborhoods as request +import api.model.response.neighborhoods as response +import api.model.response.default as default + +neighborhoods = api.namespace('neighborhoods', description="Neighborhood namespace") + +@neighborhoods.route("") +class User(Resource): + @cross_origin(origin='*', headers=['Content-Type', 'Authorization']) + @required(response=response.neighborhood_list, token=True) + def get(self): + return GetNeighborhoods() + + @cross_origin(origin='*', headers=['Content-Type', 'Authorization']) + @required(response=default.message, request=request.neighborhood, token=True) + def post(self, data): + return PostNeighborhoods(data) \ No newline at end of file diff --git a/api/controller/users.py b/api/controller/users.py index 5d4e007..cc86ac5 100644 --- a/api/controller/users.py +++ b/api/controller/users.py @@ -1,16 +1,12 @@ from flask_cors import cross_origin -from api.util.decorators import required, token_required -from api.service.users import GetUsers, GetVerify, PostUsers, Bairros, GetUserId, PutUserId, DelUserId -from flask import Blueprint +from api.util.decorators import required +from api.service.users import GetUsers, GetVerify, PostUsers, GetUserId, PutUserId, DelUserId from api import api from flask_restx import Resource import api.model.request.users as request import api.model.response.users as response import api.model.response.default as default -#TODO: adicionar prefixo para as chamadas -app = Blueprint('users', __name__, url_prefix='') - users = api.namespace('users', description="Users namespace") @users.route("") @@ -24,15 +20,6 @@ def get(self): def post(self, data): return PostUsers(data) -#TODO: criar controller para bairros? -#TODO: separar POST e GET -#TODO: adicionar json_required POST -@app.route('/bairros', methods=['POST', 'GET']) -@cross_origin(origin='*', headers=['Content-Type', 'Authorization']) -@token_required -def bairros(): - return Bairros() - @users.route('/') class UserId(Resource): @cross_origin(origin='*', headers=['Content-Type', 'Authorization']) diff --git a/api/model/request/neighborhoods.py b/api/model/request/neighborhoods.py new file mode 100644 index 0000000..c4fe35f --- /dev/null +++ b/api/model/request/neighborhoods.py @@ -0,0 +1,7 @@ +from api import api +from flask_restx import fields + +neighborhood = api.model("Create Neighborhood", +{ + "nome": fields.String() +}) \ No newline at end of file diff --git a/api/model/response/neighborhoods.py b/api/model/response/neighborhoods.py new file mode 100644 index 0000000..b784e0a --- /dev/null +++ b/api/model/response/neighborhoods.py @@ -0,0 +1,15 @@ +from api import api +from flask_restx import fields + +neighborhood = api.model("Bairro", +{ + "id": fields.Integer(), + "nome": fields.String() +}) + +neighborhood_list = api.model("Lista de Bairros", +{ + "count": fields.Integer(), + "Bairros": fields.List(fields.Nested(neighborhood)), + "message": fields.String() +}) \ No newline at end of file diff --git a/api/service/neighborhoods.py b/api/service/neighborhoods.py new file mode 100644 index 0000000..125dbf6 --- /dev/null +++ b/api/service/neighborhoods.py @@ -0,0 +1,21 @@ +from flask import request +from api import db +from api.model.database.users import Bairro + +def PostNeighborhoods(data): + new_bairro = Bairro(nome=data['nome']) + + db.session.add(new_bairro) + db.session.commit() + + return {"message": f"Bairro criado com sucesso"} + +def GetNeighborhoods(): + bairros = Bairro.query.all() + results = [ + { + "nome": bairro.nome, + "id": bairro.id + } for bairro in bairros] + + return {"count": len(results), "Bairros": results, "message": "success"} \ No newline at end of file diff --git a/api/service/users.py b/api/service/users.py index d95ec10..9b485ae 100644 --- a/api/service/users.py +++ b/api/service/users.py @@ -1,6 +1,5 @@ -from flask import request from api import db -from api.model.database.users import Usuario, Bairro +from api.model.database.users import Usuario from api.model.database.notifications import Notificacoes_Conf def UserToDict(user: Usuario): @@ -38,32 +37,6 @@ def GetUsers(): return {"count": len(results), "users": results, "message": "success"} -#TODO: separar POST e GET -#TODO: remover verificação de método -#TODO: remover verificação de json POST -def Bairros(): - if request.method == 'POST': - if request.is_json: - data = request.get_json() - new_bairro = Bairro(nome=data['nome']) - - db.session.add(new_bairro) - db.session.commit() - - return {"message": f"Privilégio criado com sucesso"} - else: - return {"error": "A requisição não foi feita no formato esperado"} - - elif request.method == 'GET': - bairros = Bairro.query.all() - results = [ - { - "nome": bairro.nome, - "id": bairro.id - } for bairro in bairros] - - return {"count": len(results), "Bairros": results, "message": "success"} - def GetUserId(id): user = Usuario.query.get_or_404(id) response = { diff --git a/app.py b/app.py index 6f71705..2cc841c 100644 --- a/app.py +++ b/app.py @@ -1,7 +1,7 @@ import os from flask_cors import cross_origin from api import app -from api.controller import users, auth, forms, notifications, comments, posts, privileges +from api.controller import users, auth, forms, notifications, comments, posts, privileges, neighborhoods app.register_blueprint(forms.app) app.register_blueprint(comments.app)