import configparser
import psycopg2
from sql_queries import copy_table_queries, insert_table_queries


def load_staging_tables(cur, conn):
    """Iterate through and exectue COPY queries to insert
    data into staging tables.

    Parameters:
        cur: cursor object
            cursor to perform data base operation
        conn: connection object
            connection to database
    """
    counter = 1
    for query in copy_table_queries:
        cur.execute(query)
        conn.commit()
        print('LOAD {} DONE.'.format(counter))
        counter+=1


def insert_tables(cur, conn):
    """Iterate through and exectue INSERT queries to insert
    data into analytics tables.

    Parameters:
        cur: cursor object
            cursor to perform data base operation
        conn: connection object
            connection to database
    """
    counter = 1
    for query in insert_table_queries:
        cur.execute(query)
        conn.commit()
        print('INSERT {} DONE.'.format(counter))
        counter += 1


def main():
    config = configparser.ConfigParser()
    config.read('dwh.cfg')

    conn = psycopg2.connect("host={} dbname={} user={} password={} port={}".format(*config['CLUSTER'].values()))
    cur = conn.cursor()
    
    load_staging_tables(cur, conn)
    insert_tables(cur, conn)

    conn.close()


if __name__ == "__main__":
    main()
