You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.4 KiB
53 lines
1.4 KiB
2 years ago
|
from flask import Flask, jsonify, request
|
||
|
app = Flask(__name__)
|
||
|
from flask_sqlalchemy import SQLAlchemy
|
||
|
|
||
|
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
|
||
|
db = SQLAlchemy(app)
|
||
|
|
||
|
app.app_context().push()
|
||
|
|
||
|
class Drink(db.Model):
|
||
|
id = db.Column(db.Integer, primary_key=True)
|
||
|
name = db.Column(db.String(80), unique=True, nullable=False)
|
||
|
description = db.Column(db.String(120))
|
||
|
|
||
|
def __repr__(self) -> str:
|
||
|
return f"{self.name} - {self.description}"
|
||
|
|
||
|
|
||
|
@app.route('/')
|
||
|
def index():
|
||
|
return 'Hello World !'
|
||
|
|
||
|
@app.route('/drinks')
|
||
|
def get_drinks():
|
||
|
drinks = Drink.query.all()
|
||
|
|
||
|
output = []
|
||
|
for drink in drinks:
|
||
|
drink_data = {'name': drink.name, 'description': drink.description}
|
||
|
output.append(drink_data)
|
||
|
|
||
|
return {"drinks": output}
|
||
|
|
||
|
@app.route('/drinks/<id>')
|
||
|
def get_drink(id):
|
||
|
drink = Drink.query.get_or_404(id)
|
||
|
return jsonify({'name': drink.name, "description": drink.description})
|
||
|
|
||
|
@app.route('/drinks', methods=['POST'])
|
||
|
def add_drink():
|
||
|
drink = Drink(name=request.json['name'], description=request.json['description'])
|
||
|
db.session.add(drink)
|
||
|
db.session.commit()
|
||
|
return {'id': drink.id}
|
||
|
|
||
|
@app.route('/drinks/<id>',methods=['DELETE'])
|
||
|
def delete_drink(id):
|
||
|
drink = Drink.query.get(id)
|
||
|
if drink is None:
|
||
|
return {'error': "not found"}
|
||
|
db.session.delete(drink)
|
||
|
db.session.commit()
|
||
|
return {"message": '{} succesfuly deleted'.format(drink.name)}
|