def adicionar_livro(): livroschema = LivroSchema() autorschema = AutorSchema(many=True) try: livro = Livro(**request.json) db.session.add(livro) if 'autores' in request.json: livro.autores = livro.adicionar_autor(request.json['autores']) db.session.commit() dados = livroschema.dump(livro) dados['autores'] = autorschema.dump(livro.autores) livro = dados data = {'message': 'Livro adicionado com sucesso.', 'data': livro} return jsonify(data), 201 except (ValueError, TypeError): data = {'message': 'Erro ao adicionar livro.'} return jsonify(data), 400 except FlushError: data = {'message': 'Autor não encontrado.'} return jsonify(data), 404
def atualizar_livro(id): livroschema = LivroSchema() autorschema = AutorSchema(many=True) livro = Livro.query.get(id) if livro: if 'autores' in request.json: livro.autores = livro.adicionar_autor(request.json['autores']) try: livro.titulo = request.json['titulo'] livro.vol = request.json['vol'] db.session.commit() dados = {'message': 'Livro atualizado com sucesso.'} dados['data'] = livroschema.dump(livro) dados['data']['autores'] = autorschema.dump(livro.autores) livro = dados return jsonify(livro), 200 except (ValueError, KeyError): dados = {'message': 'Erro ao atualizar livro.'} return jsonify(dados), 400 dados = {'message': 'Livro não encontrado.'} return jsonify(dados), 404
def delete_livro(id): livroschema = LivroSchema() autorschema = AutorSchema(many=True) livro = Livro.query.get(id) if livro: try: db.session.delete(livro) db.session.commit() dados = { 'message': 'Livro deletado com sucesso.' } dados['data'] = livroschema.dump(livro) dados['data']['autores'] = autorschema.dump(livro.autores) livro = dados return jsonify(livro), 200 except (ValueError, TypeError): dados = { 'message': 'Erro ao atualizar livro.' } return jsonify(dados), 400 dados = { 'message': 'Livro não encontrado.' } return jsonify(dados), 404
def ver_livro(id): livroschema = LivroSchema() livro = Livro.query.get(id) autorschema = AutorSchema(many=True) if livro: dados = livroschema.dump(livro) dados['autores'] = autorschema.dump(livro.autores) else: dados = {'message': 'Livro não cadastrado.'} return jsonify(dados), 200
def ver_livros(): livroschema = LivroSchema(many=True) autorschema = AutorSchema(many=True) livros = Livro.query.all() if livros: dados = livroschema.dump(livros) for i, dado in enumerate(dados): dado['autores'] = autorschema.dump(livros[i].autores) else: dados = {'message': 'Nenhum livro cadastrado.'} return jsonify(dados), 200
def adicionar_varios_livros(): livroschema = LivroSchema() autorschema = AutorSchema(many=True) data = [] try: for livro in request.json: _livro = Livro(**livro) db.session.add(_livro) db.session.commit() if 'autores' in livro: autores = _livro.adicionar_autor(livro['autores']) for autor in autores: _livro.autores.append(autor) db.session.commit() dados = livroschema.dump(_livro) dados['autores'] = autorschema.dump(_livro.autores) data.append(dados) return jsonify(data), 201 except (ValueError, TypeError): data = { 'message': 'Erro ao adicionar livro.' } return jsonify(data), 400 except FlushError: data = { 'message': 'Autor não encontrado.' } return jsonify(data), 404