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

Iris Flystam #77

Open
wants to merge 1 commit 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
12 changes: 10 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -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.3.3'
id 'io.spring.dependency-management' version '1.1.6'
}

group = 'com.booleanuk'
Expand All @@ -13,15 +13,23 @@ java {
}
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
Expand Down
63 changes: 63 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,63 @@
package com.booleanuk.api.controller;

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

import java.util.List;

@RestController
@RequestMapping("games")
public class GameController {
private final GameRepository repository;

public GameController(GameRepository repository) {
this.repository = repository;
}

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

@GetMapping("{id}")
public Game getById(@PathVariable("id") Integer id) {
return this.repository.findById(id).orElseThrow();
}

@PutMapping("{id}")
@ResponseStatus(HttpStatus.CREATED)
public Game put(@PathVariable int id, @RequestBody Game game) {
Game g = this.repository.findById(id).orElseThrow(
() -> new ResponseStatusException(HttpStatus.NOT_FOUND)
);
g.setDeveloper(game.getDeveloper());
g.setGenre(game.getGenre());
g.setPublisher(game.getPublisher());
g.setTitle(game.getTitle());
g.setEarlyAccess(game.isEarlyAccess());
g.setReleaseYear(game.getReleaseYear());
repository.save(g);
return g;
}

@DeleteMapping("{id}")
public Game delete(@PathVariable int id) {
Game g = this.repository.findById(id).orElseThrow(
() -> new ResponseStatusException(HttpStatus.NOT_FOUND)
);
repository.delete(g);
return g;
}

record PostGame(String title, String genre, String publisher, String developer, int releaseYear, boolean isEarlyAccess) {}

@ResponseStatus(HttpStatus.CREATED)
@PostMapping
public Game create(@RequestBody GameController.PostGame request) {
Game game = new Game(request.title(), request.genre, request.publisher(), request.developer(), request.releaseYear(), request.isEarlyAccess());
return this.repository.save(game);
}
}
25 changes: 25 additions & 0 deletions src/main/java/com/booleanuk/api/controller/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.booleanuk.api.repository.UserRepository;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;

import java.util.List;

Expand All @@ -26,6 +27,28 @@ public User getById(@PathVariable("id") Integer id) {
return this.repository.findById(id).orElseThrow();
}

@PutMapping("{id}")
@ResponseStatus(HttpStatus.CREATED)
public User put(@PathVariable int id, @RequestBody User user) {
User u = this.repository.findById(id).orElseThrow(
() -> new ResponseStatusException(HttpStatus.NOT_FOUND)
);
u.setFirstName(user.getFirstName());
u.setEmail(user.getEmail());
u.setActive(user.getActive());
repository.save(u);
return u;
}

@DeleteMapping("{id}")
public User delete(@PathVariable int id) {
User u = this.repository.findById(id).orElseThrow(
() -> new ResponseStatusException(HttpStatus.NOT_FOUND)
);
repository.delete(u);
return u;
}

record PostUser(String email, String firstName) {}

@ResponseStatus(HttpStatus.CREATED)
Expand All @@ -34,4 +57,6 @@ public User create(@RequestBody PostUser request) {
User user = new User(request.email(), request.firstName());
return this.repository.save(user);
}


}
56 changes: 56 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,56 @@
package com.booleanuk.api.model;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.Objects;

@Entity
@Table(name = "users")
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class Game {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

private String title;
private String genre;
private String publisher;
private String developer;
private int releaseYear;
private boolean isEarlyAccess;

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

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Game game = (Game) o;
return Objects.equals(id, game.id)
&& Objects.equals(title, game.title)
&& Objects.equals(genre, game.genre)
&& Objects.equals(publisher, game.publisher)
&& Objects.equals(developer, game.developer)
&& Objects.equals(releaseYear, game.releaseYear)
&& Objects.equals(isEarlyAccess, game.isEarlyAccess);
}

@Override
public int hashCode() {
return Objects.hash(id, title, genre, publisher, developer, releaseYear, isEarlyAccess);
}
}
8 changes: 4 additions & 4 deletions src/main/java/com/booleanuk/api/model/User.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
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 lombok.NoArgsConstructor;

import java.util.Objects;

@Entity
@Table(name = "users")
@NoArgsConstructor
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.booleanuk.api.repository;

import com.booleanuk.api.model.Game;
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.