Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ludwig Joabson Lundborg #70

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,6 @@ out/

### VS Code ###
.vscode/

### User Defined ###
application.yml
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'org.postgresql:postgresql'
implementation 'org.postgresql:postgresql:42.7.4'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
Expand Down
54 changes: 54 additions & 0 deletions src/main/java/com/booleanuk/api/controller/GameController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.booleanuk.api.controller;

import com.booleanuk.api.model.Game;
import com.booleanuk.api.model.User;
import com.booleanuk.api.repository.GameRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;

import java.util.List;

@RestController
@RequestMapping("games")
public class GameController {

@Autowired
private GameRepository gameRepository;

@GetMapping
public List<Game> getAllGames(){
return this.gameRepository.findAll();
}

@PostMapping
public ResponseEntity<Game> createGame(@RequestBody Game game){
return new ResponseEntity<Game>(this.gameRepository.save(game), HttpStatus.CREATED);
}

@PutMapping("/{id}")
public ResponseEntity<Game> updateGame(@PathVariable Integer id, @RequestBody Game game){
Game gameToUpdate = this.gameRepository.findById(id).orElseThrow(()-> new ResponseStatusException(HttpStatus.NOT_FOUND, "Not Found!"));

gameToUpdate.setTitle(game.getTitle());
gameToUpdate.setGenre(game.getGenre());
gameToUpdate.setPublisher(game.getPublisher());
gameToUpdate.setDeveloper(game.getDeveloper());
gameToUpdate.setReleaseYear(game.getReleaseYear());
gameToUpdate.setEarlyAccess(game.getEarlyAccess());

return new ResponseEntity<Game>(this.gameRepository.save(gameToUpdate), HttpStatus.CREATED);
}

@DeleteMapping("{id}")
public ResponseEntity<Game> removeGame(@PathVariable Integer id){
Game gameToRemove = this.gameRepository.findById(id).orElseThrow(()-> new ResponseStatusException(HttpStatus.NOT_FOUND, "Not Found!"));

this.gameRepository.delete(gameToRemove);
return ResponseEntity.ok(gameToRemove);
}


}
50 changes: 35 additions & 15 deletions src/main/java/com/booleanuk/api/controller/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,56 @@

import com.booleanuk.api.model.User;
import com.booleanuk.api.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;

import java.util.List;

@RestController
@RequestMapping("users")
public class UserController {
private final UserRepository repository;

public UserController(UserRepository repository) {
this.repository = repository;
}
@Autowired
private UserRepository userRepository;

@GetMapping
public List<User> getAll() {
return this.repository.findAll();
public List<User> getAllUsers(){
return this.userRepository.findAll();
}

@GetMapping("{id}")
public User getById(@PathVariable("id") Integer id) {
return this.repository.findById(id).orElseThrow();
@PostMapping
public ResponseEntity<User> createUser(@RequestBody User user) {
return new ResponseEntity<User>(this.userRepository.save(user), HttpStatus.CREATED);
}

record PostUser(String email, String firstName) {}
@PutMapping("/{id}")
public ResponseEntity<User> updateUser(@PathVariable Integer id, @RequestBody User user){
User userToUpdate = this.userRepository.findById(id).orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Not Found!"));

userToUpdate.setEmail(user.getEmail());
userToUpdate.setFirstName(user.getFirstName());
userToUpdate.setLastName(user.getLastName());
userToUpdate.setUsername(user.getUsername());
userToUpdate.setPhoneNumber(user.getPhoneNumber());
return new ResponseEntity<User>(this.userRepository.save(userToUpdate), HttpStatus.CREATED);
}

@DeleteMapping("/{id}")
public ResponseEntity<User> removeUser(@PathVariable Integer id){
User userToRemove = this.userRepository.findById(id).orElseThrow(()-> new ResponseStatusException(HttpStatus.NOT_FOUND, "Not Found!"));

this.userRepository.delete(userToRemove);
return ResponseEntity.ok(userToRemove);

@ResponseStatus(HttpStatus.CREATED)
@PostMapping
public User create(@RequestBody PostUser request) {
User user = new User(request.email(), request.firstName());
return this.repository.save(user);
}







}
103 changes: 103 additions & 0 deletions src/main/java/com/booleanuk/api/model/Game.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
package com.booleanuk.api.model;


import jakarta.persistence.*;

@Entity
@Table(name = "games")
public class Game {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;

@Column(name = "title")
private String title;

@Column(name = "genre")
private String genre;

@Column(name = "publisher")
private String publisher;

@Column(name = "developer")
private String developer;

@Column(name = "release_year")
private int releaseYear;

@Column(name = "is_early_access")
private boolean isEarlyAccess;

public Game(int id, String title, String genre, String publisher, String developer, int releaseYear, boolean isEarlyAccess){
this.id = id;
this.title = title;
this.genre = genre;
this.publisher = publisher;
this.developer = developer;
this.releaseYear = releaseYear;
this.isEarlyAccess = isEarlyAccess;
}

public Game(){

}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getGenre() {
return genre;
}

public void setGenre(String genre) {
this.genre = genre;
}

public String getPublisher() {
return publisher;
}

public void setPublisher(String publisher) {
this.publisher = publisher;
}

public String getDeveloper() {
return developer;
}

public void setDeveloper(String developer) {
this.developer = developer;
}

public int getReleaseYear() {
return releaseYear;
}

public void setReleaseYear(int releaseYear) {
this.releaseYear = releaseYear;
}

public boolean getEarlyAccess() {
return isEarlyAccess;
}

public void setEarlyAccess(boolean earlyAccess) {
isEarlyAccess = earlyAccess;
}


}
66 changes: 47 additions & 19 deletions src/main/java/com/booleanuk/api/model/User.java
Original file line number Diff line number Diff line change
@@ -1,33 +1,43 @@
package com.booleanuk.api.model;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.*;

import java.util.Objects;

@Entity
@Table(name = "users")
public class User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private int id;

@Column(name = "email_address")
private String email;

@Column(name = "first_name")
private String firstName;
private Boolean isActive;

public User(Integer id, String email, String firstName, Boolean isActive) {
@Column(name = "last_name")
private String lastName;

@Column(name = "username")
private String username;

@Column(name = "phone_number")
private String phoneNumber;

public User(int id, String email, String firstName, String lastName, String username, String phoneNumber) {
this.id = id;
this.email = email;
this.firstName = firstName;
this.isActive = isActive;
this.lastName = lastName;
this.username = username;
this.phoneNumber = phoneNumber;
}

public User(String email, String firstName) {
this.email = email;
this.firstName = firstName;
this.isActive = false;
public User(){

}

public Integer getId() {
Expand All @@ -54,25 +64,41 @@ public void setFirstName(String firstName) {
this.firstName = firstName;
}

public Boolean getActive() {
return isActive;
public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPhoneNumber() {
return phoneNumber;
}

public void setActive(Boolean active) {
isActive = active;
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(id, user.id) && Objects.equals(email, user.email) && Objects.equals(firstName, user.firstName) && Objects.equals(isActive, user.isActive);
return Objects.equals(id, user.id) && Objects.equals(email, user.email) && Objects.equals(firstName, user.firstName) && Objects.equals(lastName, user.lastName) && Objects.equals(username, user.username) && Objects.equals(phoneNumber, user.phoneNumber);
}

@Override
public int hashCode() {
return Objects.hash(id, email, firstName, isActive);
return Objects.hash(id, email, firstName, lastName, username, phoneNumber);
}

@Override
Expand All @@ -81,7 +107,9 @@ public String toString() {
"id=" + id +
", email='" + email + '\'' +
", firstName='" + firstName + '\'' +
", isActive=" + isActive +
", lastName='" + lastName + '\'' +
", username='" + username + '\'' +
", phone='" + phoneNumber + '\'' +
'}';
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.booleanuk.api.repository;

import com.booleanuk.api.model.Game;
import com.booleanuk.api.model.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface GameRepository extends JpaRepository<Game, Integer> {

}
24 changes: 0 additions & 24 deletions src/main/resources/application.yml.example

This file was deleted.