diff --git a/build.gradle b/build.gradle index 2529e37..25240da 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ plugins { id 'java' - id 'org.springframework.boot' version '3.3.1' - id 'io.spring.dependency-management' version '1.1.5' + id 'org.springframework.boot' version '3.4.1' + id 'io.spring.dependency-management' version '1.1.7' } group = 'com.example' diff --git a/db/migrations/V1_0_0__create_initial_table.sql b/db/migrations/V1_0_0__create_initial_table.sql new file mode 100644 index 0000000..fe06452 --- /dev/null +++ b/db/migrations/V1_0_0__create_initial_table.sql @@ -0,0 +1,13 @@ +CREATE TABLE IF NOT EXISTS Films( + id SERIAL PRIMARY KEY, + title TEXT, + director TEXT, + director_country TEXT, + star TEXT, + star_dob TEXT, + writer TEXT, + writer_email TEXT, + year INTEGER, + genre TEXT, + score int +); \ No newline at end of file diff --git a/db/migrations/V2_0_0__create_directors_table.sql b/db/migrations/V2_0_0__create_directors_table.sql new file mode 100644 index 0000000..5513e48 --- /dev/null +++ b/db/migrations/V2_0_0__create_directors_table.sql @@ -0,0 +1,5 @@ + CREATE TABLE IF NOT EXISTS Directors ( + id SERIAL PRIMARY KEY, + name TEXT, + country TEXT +); \ No newline at end of file diff --git a/db/migrations/V2_1_0__remove_directors_details_from_films.sql b/db/migrations/V2_1_0__remove_directors_details_from_films.sql new file mode 100644 index 0000000..a580e7f --- /dev/null +++ b/db/migrations/V2_1_0__remove_directors_details_from_films.sql @@ -0,0 +1,3 @@ +ALTER TABLE Films +DROP COLUMN director, +DROP COLUMN director_country; \ No newline at end of file diff --git a/db/migrations/V2_2_0__add_foreign_key_for_directors_to_films.sql b/db/migrations/V2_2_0__add_foreign_key_for_directors_to_films.sql new file mode 100644 index 0000000..0094af8 --- /dev/null +++ b/db/migrations/V2_2_0__add_foreign_key_for_directors_to_films.sql @@ -0,0 +1,5 @@ +ALTER TABLE Films +ADD COLUMN director_id INT; + +ALTER TABLE Films +ADD CONSTRAINT fk_director_id FOREIGN KEY (director_id) REFERENCES Directors (id); \ No newline at end of file diff --git a/db/migrations/V3_0_0__create_stars_table.sql b/db/migrations/V3_0_0__create_stars_table.sql new file mode 100644 index 0000000..8caef41 --- /dev/null +++ b/db/migrations/V3_0_0__create_stars_table.sql @@ -0,0 +1,5 @@ + CREATE TABLE IF NOT EXISTS Stars ( + id SERIAL PRIMARY KEY, + name TEXT, + dob TEXT +); \ No newline at end of file diff --git a/db/migrations/V3_1_0__remove_stars_details_from_films.sql b/db/migrations/V3_1_0__remove_stars_details_from_films.sql new file mode 100644 index 0000000..d5d21d1 --- /dev/null +++ b/db/migrations/V3_1_0__remove_stars_details_from_films.sql @@ -0,0 +1,3 @@ +ALTER TABLE Films +DROP COLUMN star, +DROP COLUMN star_dob; \ No newline at end of file diff --git a/db/migrations/V3_2_0__add_foreign_key_for_stars_to_films.sql b/db/migrations/V3_2_0__add_foreign_key_for_stars_to_films.sql new file mode 100644 index 0000000..cfdef85 --- /dev/null +++ b/db/migrations/V3_2_0__add_foreign_key_for_stars_to_films.sql @@ -0,0 +1,5 @@ +ALTER TABLE Films +ADD COLUMN star_id INT; + +ALTER TABLE Films +ADD CONSTRAINT fk_star_id FOREIGN KEY (star_id) REFERENCES Stars (id); \ No newline at end of file diff --git a/db/migrations/V4_0_0__create_writers_table.sql b/db/migrations/V4_0_0__create_writers_table.sql new file mode 100644 index 0000000..cd98e40 --- /dev/null +++ b/db/migrations/V4_0_0__create_writers_table.sql @@ -0,0 +1,5 @@ + CREATE TABLE IF NOT EXISTS Writers ( + id SERIAL PRIMARY KEY, + name TEXT, + email TEXT +); \ No newline at end of file diff --git a/db/migrations/V4_1_0__remove_writers_details_from_films.sql b/db/migrations/V4_1_0__remove_writers_details_from_films.sql new file mode 100644 index 0000000..c6c5e42 --- /dev/null +++ b/db/migrations/V4_1_0__remove_writers_details_from_films.sql @@ -0,0 +1,3 @@ +ALTER TABLE Films +DROP COLUMN writer, +DROP COLUMN writer_email; \ No newline at end of file diff --git a/db/migrations/V4_2_0__add_foreign_key_for_writers_to_films.sql b/db/migrations/V4_2_0__add_foreign_key_for_writers_to_films.sql new file mode 100644 index 0000000..a796e9e --- /dev/null +++ b/db/migrations/V4_2_0__add_foreign_key_for_writers_to_films.sql @@ -0,0 +1,5 @@ +ALTER TABLE Films +ADD COLUMN writer_id INT; + +ALTER TABLE Films +ADD CONSTRAINT fk_writer_id FOREIGN KEY (writer_id) REFERENCES Writers (id); \ No newline at end of file diff --git a/db/migrations/V5_0_0__create_genres_table.sql b/db/migrations/V5_0_0__create_genres_table.sql new file mode 100644 index 0000000..9d9b004 --- /dev/null +++ b/db/migrations/V5_0_0__create_genres_table.sql @@ -0,0 +1,4 @@ + CREATE TABLE IF NOT EXISTS Genres ( + id SERIAL PRIMARY KEY, + name TEXT +); \ No newline at end of file diff --git a/db/migrations/V5_1_0__remove_genres_details_from_films.sql b/db/migrations/V5_1_0__remove_genres_details_from_films.sql new file mode 100644 index 0000000..dcc673b --- /dev/null +++ b/db/migrations/V5_1_0__remove_genres_details_from_films.sql @@ -0,0 +1,2 @@ +ALTER TABLE Films +DROP COLUMN genre; \ No newline at end of file diff --git a/db/migrations/V5_2_0__add_foreign_key_for_genres_to_films.sql b/db/migrations/V5_2_0__add_foreign_key_for_genres_to_films.sql new file mode 100644 index 0000000..5efe64d --- /dev/null +++ b/db/migrations/V5_2_0__add_foreign_key_for_genres_to_films.sql @@ -0,0 +1,5 @@ +ALTER TABLE Films +ADD COLUMN genre_id INT; + +ALTER TABLE Films +ADD CONSTRAINT fk_genre_id FOREIGN KEY (genre_id) REFERENCES Genres (id); \ No newline at end of file diff --git a/db/migrations/V6_0_0__create_persons_table.sql b/db/migrations/V6_0_0__create_persons_table.sql new file mode 100644 index 0000000..8639d31 --- /dev/null +++ b/db/migrations/V6_0_0__create_persons_table.sql @@ -0,0 +1,4 @@ +CREATE TABLE IF NOT EXISTS persons ( + id SERIAL PRIMARY KEY, + name TEXT +); \ No newline at end of file diff --git a/db/migrations/V6_1_0__remove_persons_details_from_relevant_tables.sql b/db/migrations/V6_1_0__remove_persons_details_from_relevant_tables.sql new file mode 100644 index 0000000..f37d099 --- /dev/null +++ b/db/migrations/V6_1_0__remove_persons_details_from_relevant_tables.sql @@ -0,0 +1,8 @@ +ALTER TABLE directors +DROP COLUMN name; + +ALTER TABLE stars +DROP COLUMN name; + +ALTER TABLE writers +DROP COLUMN name; \ No newline at end of file diff --git a/db/migrations/V6_2_0__add_foreign_keys_to_relevant_tables.sql b/db/migrations/V6_2_0__add_foreign_keys_to_relevant_tables.sql new file mode 100644 index 0000000..4421a77 --- /dev/null +++ b/db/migrations/V6_2_0__add_foreign_keys_to_relevant_tables.sql @@ -0,0 +1,20 @@ +-- directors +ALTER TABLE directors +ADD COLUMN person_id INT; + +ALTER TABLE directors +ADD CONSTRAINT fk_director_person_id FOREIGN KEY (person_id) REFERENCES Persons (id); + +-- stars +ALTER TABLE stars +ADD COLUMN person_id INT; + +ALTER TABLE stars +ADD CONSTRAINT fk_star_person_id FOREIGN KEY (person_id) REFERENCES Persons (id); + +-- writers +ALTER TABLE writers +ADD COLUMN person_id INT; + +ALTER TABLE writers +ADD CONSTRAINT fk_writer_person_id FOREIGN KEY (person_id) REFERENCES Persons (id); \ No newline at end of file diff --git a/db/migrations/V7_0_0__create_casts_table.sql b/db/migrations/V7_0_0__create_casts_table.sql new file mode 100644 index 0000000..1109a44 --- /dev/null +++ b/db/migrations/V7_0_0__create_casts_table.sql @@ -0,0 +1,11 @@ +CREATE TABLE IF NOT EXISTS casts ( + id SERIAL PRIMARY KEY, + film_id INTEGER, + star_id INTEGER, + CONSTRAINT fk_star_to_film_id + FOREIGN KEY(film_id) + REFERENCES films(id), + CONSTRAINT fk_star_cast_id + FOREIGN KEY(star_id) + REFERENCES stars(id) +); \ No newline at end of file diff --git a/db/migrations/V7_1_0__swap_star_to_cast.sql b/db/migrations/V7_1_0__swap_star_to_cast.sql new file mode 100644 index 0000000..68870b3 --- /dev/null +++ b/db/migrations/V7_1_0__swap_star_to_cast.sql @@ -0,0 +1,8 @@ +ALTER TABLE films +DROP COLUMN star_id; + +ALTER TABLE Films +ADD COLUMN cast_id INT; + +ALTER TABLE Films +ADD CONSTRAINT fk_film_cast_id FOREIGN KEY (cast_id) REFERENCES Casts (id); \ No newline at end of file diff --git a/db/migrations_core/.gitkeep b/db/migrations_core/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/db/migrations_core/V1_0_0__create_initial_table.sql b/db/migrations_core/V1_0_0__create_initial_table.sql new file mode 100644 index 0000000..fe06452 --- /dev/null +++ b/db/migrations_core/V1_0_0__create_initial_table.sql @@ -0,0 +1,13 @@ +CREATE TABLE IF NOT EXISTS Films( + id SERIAL PRIMARY KEY, + title TEXT, + director TEXT, + director_country TEXT, + star TEXT, + star_dob TEXT, + writer TEXT, + writer_email TEXT, + year INTEGER, + genre TEXT, + score int +); \ No newline at end of file diff --git a/db/migrations_core/V2_0_0__create_directors_table.sql b/db/migrations_core/V2_0_0__create_directors_table.sql new file mode 100644 index 0000000..5513e48 --- /dev/null +++ b/db/migrations_core/V2_0_0__create_directors_table.sql @@ -0,0 +1,5 @@ + CREATE TABLE IF NOT EXISTS Directors ( + id SERIAL PRIMARY KEY, + name TEXT, + country TEXT +); \ No newline at end of file diff --git a/db/migrations_core/V2_1_0__remove_directors_details_from_films.sql b/db/migrations_core/V2_1_0__remove_directors_details_from_films.sql new file mode 100644 index 0000000..a580e7f --- /dev/null +++ b/db/migrations_core/V2_1_0__remove_directors_details_from_films.sql @@ -0,0 +1,3 @@ +ALTER TABLE Films +DROP COLUMN director, +DROP COLUMN director_country; \ No newline at end of file diff --git a/db/migrations_core/V2_2_0__add_foreign_key_for_directors_to_films.sql b/db/migrations_core/V2_2_0__add_foreign_key_for_directors_to_films.sql new file mode 100644 index 0000000..0094af8 --- /dev/null +++ b/db/migrations_core/V2_2_0__add_foreign_key_for_directors_to_films.sql @@ -0,0 +1,5 @@ +ALTER TABLE Films +ADD COLUMN director_id INT; + +ALTER TABLE Films +ADD CONSTRAINT fk_director_id FOREIGN KEY (director_id) REFERENCES Directors (id); \ No newline at end of file diff --git a/db/migrations_core/V3_0_0__create_stars_table.sql b/db/migrations_core/V3_0_0__create_stars_table.sql new file mode 100644 index 0000000..8caef41 --- /dev/null +++ b/db/migrations_core/V3_0_0__create_stars_table.sql @@ -0,0 +1,5 @@ + CREATE TABLE IF NOT EXISTS Stars ( + id SERIAL PRIMARY KEY, + name TEXT, + dob TEXT +); \ No newline at end of file diff --git a/db/migrations_core/V3_1_0__remove_stars_details_from_films.sql b/db/migrations_core/V3_1_0__remove_stars_details_from_films.sql new file mode 100644 index 0000000..d5d21d1 --- /dev/null +++ b/db/migrations_core/V3_1_0__remove_stars_details_from_films.sql @@ -0,0 +1,3 @@ +ALTER TABLE Films +DROP COLUMN star, +DROP COLUMN star_dob; \ No newline at end of file diff --git a/db/migrations_core/V3_2_0__add_foreign_key_for_stars_to_films.sql b/db/migrations_core/V3_2_0__add_foreign_key_for_stars_to_films.sql new file mode 100644 index 0000000..cfdef85 --- /dev/null +++ b/db/migrations_core/V3_2_0__add_foreign_key_for_stars_to_films.sql @@ -0,0 +1,5 @@ +ALTER TABLE Films +ADD COLUMN star_id INT; + +ALTER TABLE Films +ADD CONSTRAINT fk_star_id FOREIGN KEY (star_id) REFERENCES Stars (id); \ No newline at end of file diff --git a/db/migrations_core/V4_0_0__create_writers_table.sql b/db/migrations_core/V4_0_0__create_writers_table.sql new file mode 100644 index 0000000..cd98e40 --- /dev/null +++ b/db/migrations_core/V4_0_0__create_writers_table.sql @@ -0,0 +1,5 @@ + CREATE TABLE IF NOT EXISTS Writers ( + id SERIAL PRIMARY KEY, + name TEXT, + email TEXT +); \ No newline at end of file diff --git a/db/migrations_core/V4_1_0__remove_writers_details_from_films.sql b/db/migrations_core/V4_1_0__remove_writers_details_from_films.sql new file mode 100644 index 0000000..c6c5e42 --- /dev/null +++ b/db/migrations_core/V4_1_0__remove_writers_details_from_films.sql @@ -0,0 +1,3 @@ +ALTER TABLE Films +DROP COLUMN writer, +DROP COLUMN writer_email; \ No newline at end of file diff --git a/db/migrations_core/V4_2_0__add_foreign_key_for_writers_to_films.sql b/db/migrations_core/V4_2_0__add_foreign_key_for_writers_to_films.sql new file mode 100644 index 0000000..a796e9e --- /dev/null +++ b/db/migrations_core/V4_2_0__add_foreign_key_for_writers_to_films.sql @@ -0,0 +1,5 @@ +ALTER TABLE Films +ADD COLUMN writer_id INT; + +ALTER TABLE Films +ADD CONSTRAINT fk_writer_id FOREIGN KEY (writer_id) REFERENCES Writers (id); \ No newline at end of file diff --git a/db/migrations_core/V5_0_0__create_genres_table.sql b/db/migrations_core/V5_0_0__create_genres_table.sql new file mode 100644 index 0000000..9d9b004 --- /dev/null +++ b/db/migrations_core/V5_0_0__create_genres_table.sql @@ -0,0 +1,4 @@ + CREATE TABLE IF NOT EXISTS Genres ( + id SERIAL PRIMARY KEY, + name TEXT +); \ No newline at end of file diff --git a/db/migrations_core/V5_1_0__remove_genres_details_from_films.sql b/db/migrations_core/V5_1_0__remove_genres_details_from_films.sql new file mode 100644 index 0000000..dcc673b --- /dev/null +++ b/db/migrations_core/V5_1_0__remove_genres_details_from_films.sql @@ -0,0 +1,2 @@ +ALTER TABLE Films +DROP COLUMN genre; \ No newline at end of file diff --git a/db/migrations_core/V5_2_0__add_foreign_key_for_genres_to_films.sql b/db/migrations_core/V5_2_0__add_foreign_key_for_genres_to_films.sql new file mode 100644 index 0000000..5efe64d --- /dev/null +++ b/db/migrations_core/V5_2_0__add_foreign_key_for_genres_to_films.sql @@ -0,0 +1,5 @@ +ALTER TABLE Films +ADD COLUMN genre_id INT; + +ALTER TABLE Films +ADD CONSTRAINT fk_genre_id FOREIGN KEY (genre_id) REFERENCES Genres (id); \ No newline at end of file diff --git a/db/migrations_core/V6_0_0__directors_inserts.sql b/db/migrations_core/V6_0_0__directors_inserts.sql new file mode 100644 index 0000000..21a6a4e --- /dev/null +++ b/db/migrations_core/V6_0_0__directors_inserts.sql @@ -0,0 +1,13 @@ +INSERT INTO directors +(id, name, country) +VALUES + (1, 'Stanley Kubrick', 'USA'), + (2, 'George Lucas', 'USA'), + (3, 'Robert Mulligan', 'USA'), + (4, 'James Cameron', 'Canada'), + (5, 'David Lean', 'UK'), + (6, 'Anthony Mann', 'USA'), + (7, 'Theodoros Angelopoulos', 'Greece'), + (8, 'Paul Verhoeven', 'Netherlands'), + (9, 'Krzysztof Kieslowski', 'Poland'), + (10, 'Jean-Paul Rappeneau', 'France'); \ No newline at end of file diff --git a/db/migrations_core/V6_1_0__stars_inserts.sql b/db/migrations_core/V6_1_0__stars_inserts.sql new file mode 100644 index 0000000..75ea0c6 --- /dev/null +++ b/db/migrations_core/V6_1_0__stars_inserts.sql @@ -0,0 +1,13 @@ +INSERT INTO stars +(id, name, dob) +VALUES + (1, 'Keir Dullea', '30/05/1936'), + (2, 'Mark Hamill', '25/09/1951'), + (3, 'Gregory Peck', '05/04/1916'), + (4, 'Leonardo DiCaprio', '11/11/1974'), + (5, 'Julie Christie', '14/04/1940'), + (6, 'Charlton Heston', '04/10/1923'), + (7, 'Manos Katrakis', '14/08/1908'), + (8, 'Rutger Hauer', '23/01/1944'), + (9, 'Juliette Binoche', '09/03/1964'), + (10, 'Gerard Depardieu', '27/12/1948') \ No newline at end of file diff --git a/db/migrations_core/V6_2_0__genres_inserts.sql b/db/migrations_core/V6_2_0__genres_inserts.sql new file mode 100644 index 0000000..5182aef --- /dev/null +++ b/db/migrations_core/V6_2_0__genres_inserts.sql @@ -0,0 +1,8 @@ +INSERT INTO genres +(id, name) +VALUES + (1, 'Science Fiction'), + (2, 'Drama'), + (3, 'Romance'), + (4, 'Historical'), + (5, 'Thriller') \ No newline at end of file diff --git a/db/migrations_core/V6_3_0__writers_inserts.sql b/db/migrations_core/V6_3_0__writers_inserts.sql new file mode 100644 index 0000000..8c6dff2 --- /dev/null +++ b/db/migrations_core/V6_3_0__writers_inserts.sql @@ -0,0 +1,13 @@ +INSERT INTO writers +(id, name, email) +VALUES + (1, 'Arthur C Clarke', 'arthur@clarke.com'), + (2, 'George Lucas', 'george@email.com'), + (3, 'Harper Lee', 'harper@lee.com'), + (4, 'James Cameron', 'james@cameron.com'), + (5, 'Boris Pasternak', 'boris@boris.com'), + (6, 'Frederick Frank', 'fred@frank.com'), + (7, 'Theodoros Angelopoulos', 'theo@angelopoulos.com'), + (8, 'Erik Hazelhoff Roelfzema', 'erik@roelfzema.com'), + (9, 'Krzysztof Kieslowski', 'email@email.com'), + (10, 'Edmond Rostand', 'edmond@rostand.com') \ No newline at end of file diff --git a/db/migrations_core/V6_4_0__films_inserts.sql b/db/migrations_core/V6_4_0__films_inserts.sql new file mode 100644 index 0000000..e14e54a --- /dev/null +++ b/db/migrations_core/V6_4_0__films_inserts.sql @@ -0,0 +1,13 @@ +INSERT INTO films +(id, title, year, score, director_id, star_id, writer_id, genre_id) +VALUES + (1, '2001: A Space Odyssey', 1968, 10, 1, 1, 1, 1), + (2, 'Star Wars: A New Hope', 1977, 7, 2, 2, 2, 1), + (3, 'To Kill A Mockingbird', 1962, 10, 3, 3, 3, 2), + (4, 'Titanic', 1997, 5, 4, 4, 4, 3), + (5, 'Dr Zhivago', 1965, 8, 5, 5, 5, 4), + (6, 'El Cid', 1961, 6, 6, 6, 6, 4), + (7, 'Voyage to Cythera', 1984, 8, 7, 7, 7, 2), + (8, 'Soldier of Orange', 1977, 8, 8, 8, 8, 5), + (9, 'Three Colours: Blue', 1993, 8, 9, 9, 9, 2), + (10, 'Cyrano de Bergerac', 1990, 9, 10, 10, 10, 4) \ No newline at end of file