from sys import stderr

from sqlalchemy.exc import SQLAlchemyError

from database import Database, Person


def add_starter_data(session):
    alice = Person(name='Alice')
    bob = Person(name='Bob', mentor=alice)
    carol = Person(name='Carol', supervisor=alice)
    bob.mentees = [carol]
    alice.reviewers = [bob, carol]
    bob.reviewees += [bob]
    session.add(alice)
    session.add(bob)
    session.add(carol)


def main():
    try:
        url = Database.construct_mysql_url('localhost', 3306, 'people', 'root', 'cse')
        database = Database(url)
        database.ensure_tables_exist()
        print('Tables created.')
        session = database.create_session()
        add_starter_data(session)
        session.commit()
        print('Records created.')
    except SQLAlchemyError as exception:
        print('Database setup failed!', file=stderr)
        print(f'Cause: {exception}', file=stderr)
        exit(1)


if __name__ == '__main__':
    main()