From 78a04f6d7bc9dbd438eab877e759b5024cea2bf6 Mon Sep 17 00:00:00 2001
From: Duncan Holmes <dholmes4@huskers.unl.edu>
Date: Thu, 10 Apr 2025 15:49:26 -0500
Subject: [PATCH] Upload New File

---
 lab on ORM/movies_installer.py | 108 +++++++++++++++++++++++++++++++++
 1 file changed, 108 insertions(+)
 create mode 100644 lab on ORM/movies_installer.py

diff --git a/lab on ORM/movies_installer.py b/lab on ORM/movies_installer.py
new file mode 100644
index 0000000..aaf88c7
--- /dev/null
+++ b/lab on ORM/movies_installer.py	
@@ -0,0 +1,108 @@
+from shlex import quote
+from sys import stderr
+
+from datetime import date
+
+from sqlalchemy.exc import SQLAlchemyError
+
+from movies import MovieDatabase, Movie, Genre, Review
+
+from sqlalchemy.sql import text
+
+def add_starter_data(session):
+    biography = Genre(name='Biography')
+    drama = Genre(name='Drama')
+    history = Genre(name='History')
+    action = Genre(name='Action')
+    adventure = Genre(name='Adventure')
+    sci_fi = Genre(name='SciFi')
+    session.add(biography)
+    session.add(drama)
+    session.add(history)
+    session.add(action)
+    session.add(adventure)
+    session.add(sci_fi)
+
+    # Hidden Figures (Biography, Drama, History)
+    #  2016 October 15
+    #  Budget: $25,000,000
+    #  Gross Revenue: $206,000,000
+    # Sample review from IMDB:
+    #  "★★★★★★★★★☆ In the opinion of this reviewer, an extraordinary achievement."
+    hidden_figures = Movie(title='Hidden Figures', budget=25000000, gross_revenue=206000000,
+                           opening_date=date(2016, 10, 15), genres=[biography, drama, history])
+    session.add(hidden_figures)
+    extraordinary_achievement = Review(movie=hidden_figures, score=9,
+                                       comments='In the opinion of this reviewer, an extraordinary achievement.')
+    session.add(extraordinary_achievement)
+
+    # Avengers: Infinity War (Action, Adventure)
+    #  2018 April 27
+    #  Budget: $300,000,000
+    #  Gross Revenue: $2,048,000,000
+    # Sample reviews from IMDB:
+    #  "★★★★★★★★★★ A summer film that IS even better than the hype."
+    #  "★★★★★★☆☆☆☆ Bordering on a comedy, "Infinity War" is overhyped, lacked direction, but at times impressed."
+    infinity_war = Movie(title='Avengers: Infinity War', budget=300000000, gross_revenue=2048000000,
+                         opening_date=date(2018, 4, 27), genres=[action, adventure])
+    session.add(infinity_war)
+    better_than_hype = Review(movie=infinity_war, score=10,
+                              comments='A summer film that IS even better than the hype.')
+    bordering_on_comedy = Review(movie=infinity_war, score=6,
+                                 comments='Bordering on a comedy, "Infinity War" is overhyped, lacked direction, but '
+                                          'at times impressed.')
+    session.add(better_than_hype)
+    session.add(bordering_on_comedy)
+
+
+def main():
+    try:
+        url = (MovieDatabase.construct_mysql_url
+               ('localhost',
+                3306,
+                'movies',
+                'root',
+                #roh moment. I HATE EVERY LAB CREATED ON MY LIFE.
+                #MAY THE NEXT GENERATION NOT KNOW MY FURY
+                #MAY THE CONSTRUCTOR OF THIS BULL SUFFER WITH RETRIBUTION
+                #   since i'm using @ & % which are specail cahracters you have to encode them
+                #   good thing NOBODY TOLD ME THAT .
+                'FunNyMeMe123!%40%23'))
+        movie_database = MovieDatabase(url)
+        movie_database.ensure_tables_exist()
+
+        """
+        session_reviews = movie_database.create_session()
+        session_reviews.execute(text("DROP TABLE IF EXISTS reviews"))
+        session_reviews.commit()
+        session_reviews.close()
+
+        session_movie_genres = movie_database.create_session()
+        session_movie_genres.execute(text("DROP TABLE IF EXISTS movie_genres"))
+        session_movie_genres.commit()
+        session_movie_genres.close()
+
+        session_genres = movie_database.create_session()
+        session_genres.execute(text("DROP TABLE IF EXISTS genres"))
+        session_genres.commit()
+        session_genres.close()
+
+        session_movies = movie_database.create_session()
+        session_movies.execute(text("DROP TABLE IF EXISTS movies"))
+        session_movies.commit()
+        session_movies.close()
+        """
+
+        print('Tables created.')
+        session_movies = movie_database.create_session()
+        add_starter_data(session_movies)
+        session_movies.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()
-- 
GitLab