-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
101 lines (72 loc) · 2.78 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
from flask import Flask, Response, request
from flask_sqlalchemy import SQLAlchemy
import mysql.connector
import json
app = Flask(__name__)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:@localhost/youtube'
db = SQLAlchemy(app)
class Usuario(db.Model):
id = db.Column(db.Integer, primary_key=True)
nome = db.Column(db.String(50))
email = db.Column(db.String(100))
def to_json(self):
return {"id": self.id, "nome": self.nome, "email": self.email}
# Selecionar Tudo
@app.route("/usuarios", methods=["GET"])
def seleciona_usuarios():
usuarios_objetos = Usuario.query.all()
usuarios_json = [usuario.to_json() for usuario in usuarios_objetos]
return gera_response(200, "usuarios", usuarios_json)
# Selecionar Individual
@app.route("/usuario/<id>", methods=["GET"])
def seleciona_usuario(id):
usuario_objeto = Usuario.query.filter_by(id=id).first()
usuario_json = usuario_objeto.to_json()
return gera_response(200, "usuario", usuario_json)
# Cadastrar
@app.route("/usuario", methods=["POST"])
def cria_usuario():
body = request.get_json()
try:
usuario = Usuario(nome=body["nome"], email=body["email"])
db.session.add(usuario)
db.session.commit()
return gera_response(201, "usuario", usuario.to_json(), "Criado com sucesso")
except Exception as e:
print('Erro', e)
return gera_response(400, "usuario", {}, "Erro ao cadastrar")
# Atualizar
@app.route("/usuario/<id>", methods=["PUT"])
def atualiza_usuario(id):
usuario_objeto = Usuario.query.filter_by(id=id).first()
body = request.get_json()
try:
if('nome' in body):
usuario_objeto.nome = body['nome']
if('email' in body):
usuario_objeto.email = body['email']
db.session.add(usuario_objeto)
db.session.commit()
return gera_response(200, "usuario", usuario_objeto.to_json(), "Atualizado com sucesso")
except Exception as e:
print('Erro', e)
return gera_response(400, "usuario", {}, "Erro ao atualizar")
# Deletar
@app.route("/usuario/<id>", methods=["DELETE"])
def deleta_usuario(id):
usuario_objeto = Usuario.query.filter_by(id=id).first()
try:
db.session.delete(usuario_objeto)
db.session.commit()
return gera_response(200, "usuario", usuario_objeto.to_json(), "Deletado com sucesso")
except Exception as e:
print('Erro', e)
return gera_response(400, "usuario", {}, "Erro ao deletar")
def gera_response(status, nome_do_conteudo, conteudo, mensagem=False):
body = {}
body[nome_do_conteudo] = conteudo
if(mensagem):
body["mensagem"] = mensagem
return Response(json.dumps(body), status=status, mimetype="application/json")
app.run()