# part 2
import psycopg2
from config import config

def create_tables():
    commands=(
        '''
        CREATE TABLE vendors(
            vendor_id SERIAL PRIMARY KEY,
            vendor_name VARCHAR(255) NOT NULL
        )
        ''',
        '''
        CREATE TABLE parts(
            part_id SERIAL PRIMARY KEY,
            part_name VARCHAR(255) NOT NULL
        )
        ''',

        '''
        CREATE TABLE part_drawings(
            part_id INTEGER PRIMARY KEY,
            file_extension VARCHAR(5) NOT NULL,
            drawing_data BYTEA NOT NULL,
            FOREIGN KEY (part_id)
            REFERENCES parts(part_id)
            ON UPDATE CASCADE ON DELETE CASCADE

        )
        ''',
        # В данном случае столбец, указанный после FOREIGN КЕY - это столбец текущей таблицы, 
        # именно ДЛЯ НЕГО будет проверяться ограничение. После REFERENCES указываются данные 
        # родительской таблицы - ее имя и столбцы, ПО НИМ будет проверяться ограничение
        '''
        CREATE TABLE vendor_parts(
            vendor_id INTEGER NOT NULL,
            part_id INTEGER NOT NULL,
            PRIMARY KEY(vendor_id,part_id),
            FOREIGN KEY(vendor_id)
                REFERENCES vendors(vendor_id)
                ON UPDATE CASCADE ON DELETE CASCADE,
            FOREIGN KEY(part_id)
                REFERENCES parts(part_id)
                ON UPDATE CASCADE ON DELETE CASCADE 
        )
        '''
    )
    conn=None
    try:
        params=config()
        conn=psycopg2.connect(**params)
        cur=conn.cursor()
        for command in commands:
            cur.execute(command)
        cur.close()
        conn.commit()
    except Exception as e:
        print(e)

    if conn is not None:
        conn.close()

create_tables()