diff --git a/api.py b/api.py new file mode 100644 index 0000000..c09c71c --- /dev/null +++ b/api.py @@ -0,0 +1,67 @@ +import wrapper +from flask import Flask, jsonify, request + +app = Flask(__name__) + +@app.route('/api/v1/personnes/', methods=['POST']) +def create_personne(): +# On recupere le corps (payload) de la requete + payload = request.form.to_dict() + result = wrapper.add_personne(**payload) + if result: + return jsonify(status='True', message='User created') + return jsonify(status='False') + +@app.route('/api/v1/personnes/', methods=['GET']) +def get_all_personnes(): + result = wrapper.get_all_personnes() + if result: + return jsonify(status="True", + result= [ + {"idPersonne":personne.idPersonne, + "nom":personne.nom, + "prenom":personne.prenom, + "dateNaissance":personne.dateNaissance, + "tel": personne.tel} for personne in result.all() ]) + return jsonify(status="False") + +@app.route('/api/v1/personnes/', methods=['GET']) +def get_personne(id): + result = wrapper.get_personne_by_id(id) + if result: + return jsonify(status="True", + result={"nom":result.nom, + "prenom":result.prenom, + "email":result.email, + "ville": result.ville, +"telephone": result.telephone} +) +return jsonify(status="False") + +@app.route('/api/v1/user/<email>', methods=['PUT']) +def mofify_user(email): +result = wrapper.update_attribute(email, request.form.to_dict()) +if result: +return jsonify(status="True", +message= "updated", +result={ +"nom":result.nom, +"prenom":result.prenom, +"email":result.email, +"ville": result.ville, +"telephone": result.telephone} +) +return jsonify(status= "False") + +@app.route('/api/v1/user/<email>', methods=['DELETE']) +def delete_user(email): +result = wrapper.delete_user_by_id(email) +if result: +return jsonify(status="True", +message= "Deleted", +email=email +) +return jsonify(status="False") + +if __name__ == '__main__': +app.run(host='0.0.0.0', port=5000, debug=True) \ No newline at end of file diff --git a/config.py b/config.py new file mode 100644 index 0000000..97fc3a6 --- /dev/null +++ b/config.py @@ -0,0 +1,11 @@ +MYSQL_HOST = "172.18.0.3" +MYSQL_PORT = 3306 +MYSQL_USER = "api-python" +MYSQL_PWD = "api-python" +MYSQL_DB = "api-python" + +SQLALCHEMY_DATABASE_URI = "mysql+pymysql://{}:{}@{}:{}/{}".format(MYSQL_USER, +MYSQL_PWD, +MYSQL_HOST, +MYSQL_PORT, +MYSQL_DB) \ No newline at end of file diff --git a/wrapper.py b/wrapper.py new file mode 100644 index 0000000..3c4cc31 --- /dev/null +++ b/wrapper.py @@ -0,0 +1,88 @@ +from numpy import int32 +from sqlalchemy.orm import sessionmaker +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy import ForeignKey, create_engine, Column, String, DATETIME +import config + +MYSQL_HOST = config.MYSQL_HOST +MYSQL_PORT = config.MYSQL_PORT +MYSQL_USER = config.MYSQL_USER +MYSQL_PWD = config.MYSQL_PWD +MYSQL_DB = config.MYSQL_DB + +SQLALCHEMY_DATABASE_URI = "mysql+pymysql://{}:{}@{}:{}/{}".format(MYSQL_USER, +MYSQL_PWD, +MYSQL_HOST, +MYSQL_PORT, +MYSQL_DB) + +engine = create_engine(SQLALCHEMY_DATABASE_URI) +Session = sessionmaker(bind=engine) +session = Session() +Base = declarative_base() + +class Personne(Base): +# Cette classe correspond à la version objet de notre table personne + __tablename__ = "personne" + idPersonne = Column(int32,unique=True,ForeignKey=True) + nom = Column(String(100), unique=False, nullable=False, primary_key=False) + prenom = Column(String(100), nullable=False) + dateNaissance = Column(DATETIME, nullable=False) + tel = Column(String(12), nullable=False) + +def add_personne(idPersonne, nom, prenom, dateNaissance, tel): + try: + personne = Personne(idPersonne = idPersonne, + nom = nom, + prenom = prenom, + dateNaissance=dateNaissance, + tel=tel) + session.add(personne) + session.commit() + return True + except Exception as e: + print(e) + return False + +def get_personne_by_id(id): + try: + result = session.query(Personne).filter_by(id=id).first() + return result + except Exception as e: + print(e) + return False + +def get_all_personnes(): + try: + result = session.query(Personne).filter_by() + return result + except Exception as e: + print(e) + return False + +def delete_personne_by_id(id): + try: + user_to_delete = get_personne_by_id(id) + if user_to_delete : + session.delete(user_to_delete) + session.commit() + return True + else: + return False + except Exception as e: + print(e) + return False + +def update_attribute(id, attributes): + try: + personne_to_update = get_personne_by_id(id) + if personne_to_update : + for k,v in attributes.items(): + setattr(personne_to_update, k, v) + session.commit() + return personne_to_update + else: + return False + except Exception as e: + print(e) + return False \ No newline at end of file