import mysql.connector


def add_row(compte, points, mycursor, mydb):
    sql = "INSERT INTO daily (compte, points, date) VALUES (%s, %s, current_date())"
    val = (compte, points)
    mycursor.execute(sql, val)
    mydb.commit()
    #printf(mycursor.rowcount, "record created.")


def update_row(compte, points, mycursor, mydb):
    sql = f"UPDATE daily SET points = {points} WHERE compte = '{compte}' AND date = current_date() ;"
    mycursor.execute(sql)
    mydb.commit()
    #printf(mycursor.rowcount, "record(s) updated")


def update_last(compte, points, mycursor, mydb):
    sql = f"UPDATE comptes SET last_pts = {points} WHERE compte = '{compte}';"
    mycursor.execute(sql)
    mydb.commit()
    #printf(mycursor.rowcount, "record(s) updated")


def get_row(compte, points, mycursor, same_points = True): #return if there is a line with the same ammount of point or with the same name as well as the same day
    if same_points :
        mycursor.execute(f"SELECT * FROM daily WHERE points = {points} AND compte = '{compte}' AND date = current_date() ;")
    else :
        mycursor.execute(f"SELECT * FROM daily WHERE compte = '{compte}' AND date = current_date() ;")
    myresult = mycursor.fetchall()
    return(len(myresult) == 1)


def add_to_database(compte, points, sql_host,sql_usr,sql_pwd,sql_database ):
    mydb = mysql.connector.connect(
        host=sql_host,
        user=sql_usr,
        password=sql_pwd,
        database = sql_database
    )
    mycursor = mydb.cursor()

    if get_row(compte, points,mycursor, True): #check if the row exist with the same ammount of points and do nothind if it does
        #printf("les points sont deja bon")
        #return(0)
        pass
    elif get_row(compte, points,mycursor, False) : #check if the row exist, but without the same ammount of points and update the point account then
        update_row(compte, points,mycursor,mydb)
        #printf("row updated")
        #return(1)
    else : # if the row don't exist, create it with the good ammount of points
        add_row(compte, points,mycursor,mydb)
        #return(2) #printf("row added")
    if int(points) > 10 :
        update_last(compte, points, mycursor, mydb)

    mycursor.close()
    mydb.close()