#!/usr/bin/env python3.10

from flask import Flask, request, jsonify
import modelo

app = Flask(__name__)

# Enpoint Creacion de Usuario
@app.route("/user", methods=["POST"])
def add_user():
    username = request.json['username']
    email = request.json['email']
    print(username)
    modelo.creacion_usuario(username, email)

    User_dict = {
        "username": username,
        "email": email
    }

    return jsonify(User_dict)


# Enpoint Muestra todos los Usuarios
@app.route("/user", methods=["GET"])
def get_user():
    resultados = []
    result = modelo.obtener_registros()
    #print(result)
    claves = ['id', 'nombres', 'correo']
    for objetos in result:
        list2dic = dict(zip(claves, objetos))
        resultados.append(list2dic)


    return jsonify({"data":resultados})


# Enpoint Muestra Detalle de los Usuarios por ID
@app.route("/user/<id>", methods=["GET"])
def user_detail(id):
    result = modelo.obtener_x_id(id)
    claves = ['id', 'nombres', 'correo']
    lista2dic = dict(zip(claves, result))

    return lista2dic



# Enpoint Modifica Usuario por ID
@app.route("/user/<id>", methods=["PUT"])
def user_update(id):
    username = request.json['username']
    email = request.json['email']
    modelo.modifica_usuario(id, username, email)

    User_dict = {
        "username": username,
        "email": email
    }

    return jsonify(User_dict)



# Enpoint Elimina Usuario
@app.route("/user/<id>", methods=["DELETE"])
def user_delete(id):
    modelo.elimina_usuario(id)
    User_dict = {
        'id' : id
    }

    return jsonify(User_dict)



if __name__ == '__main__':
  with app.app_context():
    #db.create_all()
    app.run(host="localhost", port="5000", debug=True)