from transformers import pipeline
import psycopg2

# Connect to the School database

def summarize_articles(summfunc):
    """ Connect to the PostgreSQL database server """

    conn = psycopg2.connect(
        dbname="crowsnest",
        user="crow",
        password="4LlKpnQ2RZPzL13BSpkW4k",
        host="192.168.0.2"
    )

    try:
        # create a cursor
        cur = conn.cursor()

        for i in range(20):
            print(i)
            # execute a statement
            cur.execute("""
                SELECT id, content
                FROM articles 
		        WHERE aisummary = ''
                ORDER BY publishDate DESC
		        LIMIT 20
            """)

            # display the PostgreSQL database server version
            keys, contents = list(zip(*cur.fetchall()))
            
            for key, summary in zip(keys, summfunc(list(contents))):
                cur.execute("UPDATE articles SET aisummary = %s WHERE id = %s", (summary, key))
        
            conn.commit()

        # close the communication with the PostgreSQL
        cur.close()
    except (Exception, psycopg2.DatabaseError) as error:
        raise error
    finally:
        if conn is not None:
            conn.close()
            print('Database connection closed.')


if __name__ == '__main__':
    pipe = pipeline("summarization", model="Shahm/bart-german")
    summarize_articles(lambda x: [str(e["summary_text"]) for e in pipe(x)])
