import dbCommands as db

#Connect to the database
cursor = db.connect("minibase_materials")

# This list must represent what the database contains as tables.
# Chnages in the databse structure must be reflected here
tables = ["classification", "packaging", "physical", "product"]

#Tables with the main element of database table. 
tablesColumnNames = [] #name of each column of the table
tablesPrimaryKeys = [] #Primary key of each table
tablesForeignKeys = [] #Foreign keys of the table (this is a relational database)

#Initialise tables wiht information on the server! This will drastically hep reduce server 
#Requests jus for table indformations
for table in tables:
    buffer = db.getColumnNames(cursor, table)
    tablesColumnNames.append(buffer)
    
    buffer = db.getPrimaryKey(cursor, table)
    tablesPrimaryKeys.append(buffer)

    buffer = db.getForeignKeys(cursor, table)
    tablesForeignKeys.append(buffer)


#Get the tables contained in this database
def getTables():
    return tables

#Get the foreign keys list of the given table
def getForeignKeys(table):
    return(tablesForeignKeys[tables.index(table)])
    
#Get the amount of foreign key of the given table
def getForeignKeyCount(table):
    return(len(tablesForeignKeys[tables.index(table)]))

#Get the index of a foreign key's name contained in the given table
def getForeignKeyIndex(table, keyName):
    return(tablesForeignKeys[tables.index(table)].index(keyName))

#Get the name of a foreign key's index contained in the given table
def getForeignKeyName(table, keyIndex):
    return(tablesForeignKeys[tables.index(table)][keyIndex])

#Get the primary key's name of the given table
def getPrimaryKey(table): 
    return(tablesPrimaryKeys[tables.index(table)])

#Get the column Names list of the given table
def getColumnNames(table):
    return(tablesColumnNames[tables.index(table)])

#Get the amount of column's of the given table
def getColumnCount(table):
    return(len(tablesColumnNames[tables.index(table)]))

#Get the index of a column's name contained in the given table
def getColumnNameIndex(table, columnName):
    return(tablesColumnNames[tables.index(table)].index(columnName))
    
#Get the name of a columns's index contained in the given table
def getColumnName(table, columnIndex):
    return(tablesColumnNames[tables.index(table)][columnIndex])

def printTablesInfo():
    for table in getTables():
        print( "Table: " + table)
        print( " - Primary Key : " + getPrimaryKey(table))
        for column in getColumnNames(table):
            print( " - Colum: " + column)
        for key in getForeignKeys(table):
            print( " - Foreign Key : " + key)

printTablesInfo()

