English | PortuguΓͺs Brasileiro
This project is part of the Java and Spring Boot Intensive Course, focusing on Java back-end development. The goal is to build a back-end application with a database to manage a list of games, using Java and the Spring Boot framework.
- CRUD operations to manage game data
- H2 and PostgreSQL database support
- Environment-based configuration
- API testing with Postman or Insomnia
- Docker integration
βββ assets
βΒ Β βββ DSList API.postman_collection.json
βΒ Β βββ dslist-home.png
βΒ Β βββ dslist-page-1.png
βΒ Β βββ dslist-page-2.png
βΒ Β βββ uml.png
βββ changelog.md
βββ LICENSE.md
βββ mvnw
βββ mvnw.cmd
βββ pom.xml
βββ README.md
βββ README-pt_br.md
βββ sample.env
βββ src
βΒ Β βββ main
βΒ Β βΒ Β βββ java
βΒ Β βΒ Β βΒ Β βββ br
βΒ Β βΒ Β βΒ Β βββ com
βΒ Β βΒ Β βΒ Β βββ gilbertodev
βΒ Β βΒ Β βΒ Β βββ dslist
βΒ Β βΒ Β βΒ Β βββ config
βΒ Β βΒ Β βΒ Β βΒ Β βββ SwaggerConfig.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ WebConfig.java
βΒ Β βΒ Β βΒ Β βββ controllers
βΒ Β βΒ Β βΒ Β βΒ Β βββ exceptions
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ GlobalExceptionHandler.java
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ StandardError.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ GameController.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ GameListController.java
βΒ Β βΒ Β βΒ Β βββ DslistApplication.java
βΒ Β βΒ Β βΒ Β βββ dto
βΒ Β βΒ Β βΒ Β βΒ Β βββ GameDTO.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ GameListDTO.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ GameMinDTO.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ ReplacementDTO.java
βΒ Β βΒ Β βΒ Β βββ entities
βΒ Β βΒ Β βΒ Β βΒ Β βββ Belonging.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ BelongingPK.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ Game.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ GameList.java
βΒ Β βΒ Β βΒ Β βββ exceptions
βΒ Β βΒ Β βΒ Β βΒ Β βββ GameNotFoundException.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ InvalidMoveException.java
βΒ Β βΒ Β βΒ Β βββ projections
βΒ Β βΒ Β βΒ Β βΒ Β βββ GameMinProjection.java
βΒ Β βΒ Β βΒ Β βββ repositories
βΒ Β βΒ Β βΒ Β βΒ Β βββ GameListRepository.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ GameRepository.java
βΒ Β βΒ Β βΒ Β βββ services
βΒ Β βΒ Β βΒ Β βββ GameListService.java
βΒ Β βΒ Β βΒ Β βββ GameService.java
βΒ Β βΒ Β βββ resources
βΒ Β βΒ Β βββ application-dev.yml
βΒ Β βΒ Β βββ application-prod.yml
βΒ Β βΒ Β βββ application-test.yml
βΒ Β βΒ Β βββ application.yml
βΒ Β βΒ Β βββ import.sql
βΒ Β βββ test
βΒ Β βββ java
βΒ Β βββ br
βΒ Β βββ com
βΒ Β βββ gilbertodev
βΒ Β βββ dslist
βΒ Β βββ common
βΒ Β βΒ Β βββ GameConstants.java
βΒ Β βββ service
βΒ Β βββ GameServiceTest.java
- List all games
- Search game by ID
- Move game in list
- List games in category
- List by category
- Java 17 or higher
- Maven
- Postman or Insomnia to test the API.
- Git
- Cloning the Repository
git clone git@github.com:Gilberto-Mascena/dslist.git
cd dslist mvn clean install mvn spring-boot:run-
Access the database at: http://localhost:8080/h2-console
-
Configure the JDBC URL with
jdbc:h2:mem:devdb, usernamesaand click Connect. -
Run the SQL script:
INSERT INTO tb_game_list (name) VALUES ('Aventura e RPG');
INSERT INTO tb_game_list (name) VALUES ('Jogos de plataforma');
INSERT INTO tb_game (title, score, game_year, genre, platforms, img_url, short_description, long_description) VALUES ('Mass Effect Trilogy', 4.8, 2012, 'Role-playing (RPG), Shooter', 'XBox, Playstation, PC', 'https://raw.githubusercontent.com/devsuperior/java-spring-dslist/main/resources/1.png', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit esse officiis corrupti unde repellat non quibusdam! Id nihil itaque ipsum!', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Delectus dolorum illum placeat eligendi, quis maiores veniam. Incidunt dolorum, nisi deleniti dicta odit voluptatem nam provident temporibus reprehenderit blanditiis consectetur tenetur. Dignissimos blanditiis quod corporis iste, aliquid perspiciatis architecto quasi tempore ipsam voluptates ea ad distinctio, sapiente qui, amet quidem culpa.');
INSERT INTO tb_game (title, score, game_year, genre, platforms, img_url, short_description, long_description) VALUES ('Red Dead Redemption 2', 4.7, 2018, 'Role-playing (RPG), Adventure', 'XBox, Playstation, PC', 'https://raw.githubusercontent.com/devsuperior/java-spring-dslist/main/resources/2.png', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit esse officiis corrupti unde repellat non quibusdam! Id nihil itaque ipsum!', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Delectus dolorum illum placeat eligendi, quis maiores veniam. Incidunt dolorum, nisi deleniti dicta odit voluptatem nam provident temporibus reprehenderit blanditiis consectetur tenetur. Dignissimos blanditiis quod corporis iste, aliquid perspiciatis architecto quasi tempore ipsam voluptates ea ad distinctio, sapiente qui, amet quidem culpa.');
INSERT INTO tb_game (title, score, game_year, genre, platforms, img_url, short_description, long_description) VALUES ('The Witcher 3: Wild Hunt', 4.7, 2014, 'Role-playing (RPG), Adventure', 'XBox, Playstation, PC', 'https://raw.githubusercontent.com/devsuperior/java-spring-dslist/main/resources/3.png', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit esse officiis corrupti unde repellat non quibusdam! Id nihil itaque ipsum!', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Delectus dolorum illum placeat eligendi, quis maiores veniam. Incidunt dolorum, nisi deleniti dicta odit voluptatem nam provident temporibus reprehenderit blanditiis consectetur tenetur. Dignissimos blanditiis quod corporis iste, aliquid perspiciatis architecto quasi tempore ipsam voluptates ea ad distinctio, sapiente qui, amet quidem culpa.');
INSERT INTO tb_game (title, score, game_year, genre, platforms, img_url, short_description, long_description) VALUES ('Sekiro: Shadows Die Twice', 3.8, 2019, 'Role-playing (RPG), Adventure', 'XBox, Playstation, PC', 'https://raw.githubusercontent.com/devsuperior/java-spring-dslist/main/resources/4.png', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit esse officiis corrupti unde repellat non quibusdam! Id nihil itaque ipsum!', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Delectus dolorum illum placeat eligendi, quis maiores veniam. Incidunt dolorum, nisi deleniti dicta odit voluptatem nam provident temporibus reprehenderit blanditiis consectetur tenetur. Dignissimos blanditiis quod corporis iste, aliquid perspiciatis architecto quasi tempore ipsam voluptates ea ad distinctio, sapiente qui, amet quidem culpa.');
INSERT INTO tb_game (title, score, game_year, genre, platforms, img_url, short_description, long_description) VALUES ('Ghost of Tsushima', 4.6, 2012, 'Role-playing (RPG), Adventure', 'XBox, Playstation, PC', 'https://raw.githubusercontent.com/devsuperior/java-spring-dslist/main/resources/5.png', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit esse officiis corrupti unde repellat non quibusdam! Id nihil itaque ipsum!', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Delectus dolorum illum placeat eligendi, quis maiores veniam. Incidunt dolorum, nisi deleniti dicta odit voluptatem nam provident temporibus reprehenderit blanditiis consectetur tenetur. Dignissimos blanditiis quod corporis iste, aliquid perspiciatis architecto quasi tempore ipsam voluptates ea ad distinctio, sapiente qui, amet quidem culpa.');
INSERT INTO tb_game (title, score, game_year, genre, platforms, img_url, short_description, long_description) VALUES ('Super Mario World', 4.7, 1990, 'Platform', 'Super Ness, PC', 'https://raw.githubusercontent.com/devsuperior/java-spring-dslist/main/resources/6.png', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit esse officiis corrupti unde repellat non quibusdam! Id nihil itaque ipsum!', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Delectus dolorum illum placeat eligendi, quis maiores veniam. Incidunt dolorum, nisi deleniti dicta odit voluptatem nam provident temporibus reprehenderit blanditiis consectetur tenetur. Dignissimos blanditiis quod corporis iste, aliquid perspiciatis architecto quasi tempore ipsam voluptates ea ad distinctio, sapiente qui, amet quidem culpa.');
INSERT INTO tb_game (title, score, game_year, genre, platforms, img_url, short_description, long_description) VALUES ('Hollow Knight', 4.6, 2017, 'Platform', 'XBox, Playstation, PC', 'https://raw.githubusercontent.com/devsuperior/java-spring-dslist/main/resources/7.png', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit esse officiis corrupti unde repellat non quibusdam! Id nihil itaque ipsum!', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Delectus dolorum illum placeat eligendi, quis maiores veniam. Incidunt dolorum, nisi deleniti dicta odit voluptatem nam provident temporibus reprehenderit blanditiis consectetur tenetur. Dignissimos blanditiis quod corporis iste, aliquid perspiciatis architecto quasi tempore ipsam voluptates ea ad distinctio, sapiente qui, amet quidem culpa.');
INSERT INTO tb_game (title, score, game_year, genre, platforms, img_url, short_description, long_description) VALUES ('Ori and the Blind Forest', 4, 2015, 'Platform', 'XBox, Playstation, PC', 'https://raw.githubusercontent.com/devsuperior/java-spring-dslist/main/resources/8.png', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit esse officiis corrupti unde repellat non quibusdam! Id nihil itaque ipsum!', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Delectus dolorum illum placeat eligendi, quis maiores veniam. Incidunt dolorum, nisi deleniti dicta odit voluptatem nam provident temporibus reprehenderit blanditiis consectetur tenetur. Dignissimos blanditiis quod corporis iste, aliquid perspiciatis architecto quasi tempore ipsam voluptates ea ad distinctio, sapiente qui, amet quidem culpa.');
INSERT INTO tb_game (title, score, game_year, genre, platforms, img_url, short_description, long_description) VALUES ('Cuphead', 4.6, 2017, 'Platform', 'XBox, Playstation, PC', 'https://raw.githubusercontent.com/devsuperior/java-spring-dslist/main/resources/9.png', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit esse officiis corrupti unde repellat non quibusdam! Id nihil itaque ipsum!', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Delectus dolorum illum placeat eligendi, quis maiores veniam. Incidunt dolorum, nisi deleniti dicta odit voluptatem nam provident temporibus reprehenderit blanditiis consectetur tenetur. Dignissimos blanditiis quod corporis iste, aliquid perspiciatis architecto quasi tempore ipsam voluptates ea ad distinctio, sapiente qui, amet quidem culpa.');
INSERT INTO tb_game (title, score, game_year, genre, platforms, img_url, short_description, long_description) VALUES ('Sonic CD', 4, 1993, 'Platform', 'Sega CD, PC', 'https://raw.githubusercontent.com/devsuperior/java-spring-dslist/main/resources/10.png', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit esse officiis corrupti unde repellat non quibusdam! Id nihil itaque ipsum!', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Delectus dolorum illum placeat eligendi, quis maiores veniam. Incidunt dolorum, nisi deleniti dicta odit voluptatem nam provident temporibus reprehenderit blanditiis consectetur tenetur. Dignissimos blanditiis quod corporis iste, aliquid perspiciatis architecto quasi tempore ipsam voluptates ea ad distinctio, sapiente qui, amet quidem culpa.');
INSERT INTO tb_belonging (list_id, game_id, position) VALUES (1, 1, 0);
INSERT INTO tb_belonging (list_id, game_id, position) VALUES (1, 2, 1);
INSERT INTO tb_belonging (list_id, game_id, position) VALUES (1, 3, 2);
INSERT INTO tb_belonging (list_id, game_id, position) VALUES (1, 4, 3);
INSERT INTO tb_belonging (list_id, game_id, position) VALUES (1, 5, 4);
INSERT INTO tb_belonging (list_id, game_id, position) VALUES (2, 6, 0);
INSERT INTO tb_belonging (list_id, game_id, position) VALUES (2, 7, 1);
INSERT INTO tb_belonging (list_id, game_id, position) VALUES (2, 8, 2);
INSERT INTO tb_belonging (list_id, game_id, position) VALUES (2, 9, 3);
INSERT INTO tb_belonging (list_id, game_id, position) VALUES (2, 10, 4);- With the project running.
- Import the Collection-postman
- Directly in the browser. http://localhost:8080/games
- With the project running.
- Access the address: http://localhost:8080/swagger-ui.html
This project is licensed under the MIT License. See more details at: LICENSE.md



