from sql_functions import *

# On prépare tous les items de menus pour plus tard
MENUS = {
    "add_data":  {"titre": "Ajouter des données", "items":("add_artiste", "add_film", "addRôle")},
    "show_data": {"titre": "Afficher les données", "items":("show_artistes", "show_films")},
    "exit": {"titre":"Quitter" },
    "show_artistes": {"titre": "Afficher les artistes", "action":show_artistes},
    "show_films": {"titre": "Afficher les films", "action":show_films},
    "add_artiste": {"titre": "Ajouter un artiste", "action":add_artiste},
    "add_film": {"titre": "Ajouter un film", "action":add_film},
    "addRôle": {"titre": "Ajouter un rôle", "action":add_role}
}

def show_menu(items):
    '''
    items = tableau ou tuple des items de menus à afficher
    les items sont des clés présentes dans MENUS
    '''
    for index, key in enumerate(items):
        assert key in MENUS
        menuItem = MENUS[key]
        titre_menu = "{}. {}".format(index+1, menuItem["titre"])
        print(titre_menu)

def main():
    print("MENU PRINCIPAL")
    defaultItems = ("add_data", "show_data", "exit")
    items = defaultItems
    exitAsked = False
    show_menu(items)
    while not exitAsked:
        choice = int(input("Choisissez un menu :"))
        if 1 <= choice <= len(items):
            # selectionne la fonction à exécuter
            keySelectionnée = items[choice - 1]
            menuItemSelectionné = MENUS[keySelectionnée]
            if "items" in menuItemSelectionné:
                # c'est un menu
                items = menuItemSelectionné["items"]
                show_menu(items)
            elif "action" in menuItemSelectionné:
                # c'est une action
                action = menuItemSelectionné["action"]
                action()
            else:
                exitAsked = True
        else:
            items = defaultItems
            show_menu(items)

# et lancement du menu principal
main()
