#! /usr/bin/env python
# Création et alimentation d'une petite base de données SQLite
# Langage : Python 3.4

# (1) Création et connexion à la base de donnée:
###############
# A compléter #
###############

# Création des tables. L'utilisation de try/except permet de ré-utiliser le
# script indéfiniment, même si la base de données existe déjà.

try:
    # Création de la table Client
    req = """CREATE TABLE Client (
	ClientID INTEGER PRIMARY KEY AUTOINCREMENT,
	Nom VARCHAR(40) NOT NULL,
	Adresse VARCHAR(30) NOT NULL,
	Ville VARCHAR(30) NOT NULL,
	Canton CHAR(2) NOT NULL,
	NoPostal CHAR(4) NOT NULL
)"""
    cur.execute(req)

    # Création de la table Commande
    req = """CREATE TABLE Commande (
	CommandeID INTEGER PRIMARY KEY,
	Date DATE NOT NULL,
	ClientID INTEGER NOT NULL,

	FOREIGN KEY (ClientID) REFERENCES Client (ClientID)
)"""
    cur.execute(req)

    # Création de la table Produit
    req = """CREATE TABLE Produit (
	ProduitID INTEGER PRIMARY KEY,
	Description VARCHAR(60),
	TypeReliure VARCHAR(30),
	PrixUnitaire FLOAT
)"""
    cur.execute(req)

    # (2) Création de la table LigneCommande
    
    ###############
    # A compléter #
    ###############

except:
    pass    # Si les tables existent déjà dans la base de données, on passe

# Transmission d'un message à l'utilisateur:

print("La base de données 'Librairie.sq3' a été créée avec succès ! \n")

# Insertion de quelques clients manuellement

print("Entrée des enregistrements de la table des clients :")

nom = input("Nom du prochain client (<Enter> pour terminer) : ")

while nom != '':
    
    # (3) Récupération de l'adresse, du canton, du numéro postal et de la ville du client
    # insertion de l'enregistrement dans la base de données
    
    ###############
    # A compléter #
    ###############
    
    nom = input("Nom du prochain client (<Enter> pour terminer) : ")

# Transfert effectif des enregistrements dans la BD :
conn.commit()


# Une fois les clients entrés
print("Rappel des infos introduites dans la table Client:\n")

# (4) Sélectionner tous les clients de la base de données
# Afficher chaque enregistrement selon le format proposé 
###############
# A compléter #
###############


# Fermeture de la base de données:
cur.close()
conn.close()