оно запустилось
This commit is contained in:
parent
e58d7117cf
commit
bcb8bfa8db
@ -1,13 +1,38 @@
|
|||||||
package com.example.demo;
|
package com.example.demo;
|
||||||
|
|
||||||
|
import com.example.demo.services.GameService;
|
||||||
|
import com.example.demo.services.PlayService;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.boot.CommandLineRunner;
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
import com.example.demo.services.CustomerService;
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
public class DemoApplication {
|
public class DemoApplication implements CommandLineRunner {
|
||||||
|
private final Logger log = LoggerFactory.getLogger(DemoApplication.class);
|
||||||
|
|
||||||
|
private final CustomerService customerService;
|
||||||
|
private final GameService gameService;
|
||||||
|
private final PlayService playService;
|
||||||
|
|
||||||
|
public DemoApplication(
|
||||||
|
CustomerService customerService,
|
||||||
|
GameService gameService,
|
||||||
|
PlayService playService
|
||||||
|
) {
|
||||||
|
this.customerService = customerService;
|
||||||
|
this.gameService = gameService;
|
||||||
|
this.playService = playService;
|
||||||
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
SpringApplication.run(DemoApplication.class, args);
|
SpringApplication.run(DemoApplication.class, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(String... args) throws Exception {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,68 @@
|
|||||||
|
package com.example.demo.controllers;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.example.demo.core.config.Constants;
|
||||||
|
import com.example.demo.dtos.GameDto;
|
||||||
|
import com.example.demo.dtos.PlayDto;
|
||||||
|
import com.example.demo.services.GameService;
|
||||||
|
import com.example.demo.services.PlayService;
|
||||||
|
import com.example.demo.services.CustomerService;
|
||||||
|
import com.example.demo.dtos.CustomerDto;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(Constants.API_URL + "/customers")
|
||||||
|
public class CustomerController {
|
||||||
|
private final CustomerService customerService;
|
||||||
|
|
||||||
|
private final GameService gameService;
|
||||||
|
|
||||||
|
public CustomerController(CustomerService customerService, GameService gameService, PlayService playService){
|
||||||
|
this.customerService = customerService;
|
||||||
|
this.gameService = gameService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping
|
||||||
|
public List<CustomerDto> getAll()
|
||||||
|
{
|
||||||
|
return customerService.getAllCustomers().stream().map(CustomerDto::new).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public CustomerDto get(@PathVariable(name = "id") long id) {
|
||||||
|
return new CustomerDto(customerService.findCustomer(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping
|
||||||
|
public CustomerDto create(@RequestBody CustomerDto customer) {
|
||||||
|
return new CustomerDto(customerService.addCustomer(customer.getName()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/{id}")
|
||||||
|
public CustomerDto update(
|
||||||
|
@PathVariable(name = "id") long id,
|
||||||
|
@RequestBody CustomerDto customer) {
|
||||||
|
return new CustomerDto(customerService.updateCustomer(id, customer.getName()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/{id}")
|
||||||
|
public CustomerDto delete(@PathVariable(name = "id") long id) {
|
||||||
|
return new CustomerDto(customerService.deleteCustomer(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/{id}/games")
|
||||||
|
public GameDto createGame(@PathVariable(name = "id") long id, @RequestBody GameDto game){
|
||||||
|
return new GameDto(gameService.addGame(id, game.getName(), game.getDescription()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/{id}/games")
|
||||||
|
public List<GameDto> getGames(@PathVariable(name = "id") long id){
|
||||||
|
return customerService.findCustomer(id).getGames().stream().map(GameDto::new).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/{id}/plays")
|
||||||
|
public List<PlayDto> getPlays(@PathVariable(name = "id") long id){
|
||||||
|
return customerService.findCustomer(id).getPlays().stream().map(PlayDto::new).toList();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package com.example.demo.controllers;
|
||||||
|
|
||||||
|
import com.example.demo.core.config.Constants;
|
||||||
|
import com.example.demo.dtos.GameDto;
|
||||||
|
import com.example.demo.dtos.PlayDto;
|
||||||
|
import com.example.demo.services.GameService;
|
||||||
|
import com.example.demo.services.PlayService;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(Constants.API_URL + "/games")
|
||||||
|
public class GameController {
|
||||||
|
private final GameService gameService;
|
||||||
|
|
||||||
|
private final PlayService playService;
|
||||||
|
|
||||||
|
public GameController(GameService gameService, PlayService playService){
|
||||||
|
this.gameService = gameService;
|
||||||
|
this.playService = playService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping
|
||||||
|
public List<GameDto> getAll() {
|
||||||
|
return gameService.getAllGames().stream().map(GameDto::new).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public GameDto get(@PathVariable(name = "id") long id) {
|
||||||
|
return new GameDto(gameService.findGame(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/{id}")
|
||||||
|
public GameDto update(@PathVariable(name = "id") long id, @RequestBody GameDto game) {
|
||||||
|
return new GameDto(gameService.updateGame(id, game.getName(), game.getDescription()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/{id}")
|
||||||
|
public GameDto delete(@PathVariable(name = "id") long id)
|
||||||
|
{
|
||||||
|
return new GameDto(gameService.deleteGame(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/{id}/plays")
|
||||||
|
public PlayDto create(@PathVariable(name = "id") long id, @RequestBody PlayDto play) {
|
||||||
|
return new PlayDto(playService.addPlay(id, play.getDate(), play.getDescription()));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
package com.example.demo.controllers;
|
||||||
|
|
||||||
|
import com.example.demo.core.config.Constants;
|
||||||
|
import com.example.demo.dtos.PlayDto;
|
||||||
|
import com.example.demo.services.PlayService;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(Constants.API_URL + "/plays")
|
||||||
|
public class PlayController {
|
||||||
|
private final PlayService playService;
|
||||||
|
|
||||||
|
public PlayController(PlayService playService){
|
||||||
|
|
||||||
|
this.playService = playService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping
|
||||||
|
public List<PlayDto> getAll()
|
||||||
|
{
|
||||||
|
return playService.getAllPlays().stream().map(PlayDto::new).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public PlayDto get(@PathVariable(name = "id") long id)
|
||||||
|
{
|
||||||
|
return new PlayDto(playService.findPlay(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/{id}")
|
||||||
|
public PlayDto update(@PathVariable(name = "id") long id, @RequestBody PlayDto play) {
|
||||||
|
return new PlayDto(playService.updatePlay(id, play.getDate(), play.getDescription()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/{id}")
|
||||||
|
public PlayDto delete(@PathVariable(name = "id") long id)
|
||||||
|
{
|
||||||
|
return new PlayDto(playService.deletePlay(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/{id}/customers")
|
||||||
|
public boolean addCustomer(@PathVariable(name = "id") long id, long customerId){
|
||||||
|
return playService.addCustomer(id, customerId);
|
||||||
|
}
|
||||||
|
}
|
@ -1,13 +0,0 @@
|
|||||||
package com.example.demo.core.config;
|
|
||||||
|
|
||||||
import org.modelmapper.ModelMapper;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
public class MapperConfig {
|
|
||||||
@Bean
|
|
||||||
ModelMapper modelMapper(){
|
|
||||||
return new ModelMapper();
|
|
||||||
}
|
|
||||||
}
|
|
@ -6,10 +6,9 @@ import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
|||||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
public class WebConfig implements WebMvcConfigurer {
|
public class WebConfiguration implements WebMvcConfigurer {
|
||||||
@Override
|
@Override
|
||||||
public void addCorsMappings(@NonNull CorsRegistry registry) {
|
public void addCorsMappings(CorsRegistry registry) {
|
||||||
registry.addMapping("/**")
|
registry.addMapping("/**").allowedMethods("*");
|
||||||
.allowedMethods("GET", "POST", "PUT", "DELETE");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,28 +0,0 @@
|
|||||||
package com.example.demo.core.model;
|
|
||||||
|
|
||||||
import com.example.demo.core.config.Constants;
|
|
||||||
|
|
||||||
import jakarta.persistence.GeneratedValue;
|
|
||||||
import jakarta.persistence.GenerationType;
|
|
||||||
import jakarta.persistence.Id;
|
|
||||||
import jakarta.persistence.MappedSuperclass;
|
|
||||||
import jakarta.persistence.SequenceGenerator;
|
|
||||||
|
|
||||||
@MappedSuperclass
|
|
||||||
public abstract class BaseEntity {
|
|
||||||
@Id
|
|
||||||
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = Constants.SEQUENCE_NAME)
|
|
||||||
@SequenceGenerator(name = Constants.SEQUENCE_NAME, sequenceName = Constants.SEQUENCE_NAME, allocationSize = 1)
|
|
||||||
protected Long id;
|
|
||||||
|
|
||||||
protected BaseEntity() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
}
|
|
72
demo/src/main/java/com/example/demo/dtos/CustomerDto.java
Normal file
72
demo/src/main/java/com/example/demo/dtos/CustomerDto.java
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
package com.example.demo.dtos;
|
||||||
|
import com.example.demo.models.Customer;
|
||||||
|
import jakarta.validation.constraints.*;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
public class CustomerDto {
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Min(2)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private List<GameDto> games;
|
||||||
|
|
||||||
|
private List<PlayDto> plays;
|
||||||
|
|
||||||
|
public CustomerDto(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public CustomerDto(Customer customer)
|
||||||
|
{
|
||||||
|
id = customer.getId();
|
||||||
|
name = customer.getName();
|
||||||
|
|
||||||
|
var existGames = customer.getGames();
|
||||||
|
if (existGames != null && !existGames.isEmpty()){
|
||||||
|
games = existGames.stream().map(GameDto::new).toList();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
games = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
var existPlays = customer.getPlays();
|
||||||
|
if (existPlays != null && !existPlays.isEmpty()){
|
||||||
|
plays = existPlays.stream().map(PlayDto::new).toList();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
plays = new ArrayList<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
public void setName(String name){
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<GameDto> getGames() {
|
||||||
|
return games;
|
||||||
|
}
|
||||||
|
public void setGames(List<GameDto> games){
|
||||||
|
this.games = games;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<PlayDto> getPlays(){
|
||||||
|
return plays;
|
||||||
|
}
|
||||||
|
public void setPlays(List<PlayDto> plays){
|
||||||
|
this.plays = plays;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getId(){
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
public void setId(Long id){
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
}
|
74
demo/src/main/java/com/example/demo/dtos/GameDto.java
Normal file
74
demo/src/main/java/com/example/demo/dtos/GameDto.java
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
package com.example.demo.dtos;
|
||||||
|
|
||||||
|
import com.example.demo.models.Game;
|
||||||
|
import jakarta.validation.constraints.Min;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class GameDto {
|
||||||
|
private Long id;
|
||||||
|
@NotNull
|
||||||
|
@Min(2)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
private CustomerDto customer;
|
||||||
|
|
||||||
|
private List<PlayDto> plays;
|
||||||
|
|
||||||
|
public GameDto(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public GameDto(Game game){
|
||||||
|
name = game.getName();
|
||||||
|
description = game.getDescription();
|
||||||
|
|
||||||
|
var customerExist = game.getCustomer();
|
||||||
|
if (customerExist != null){
|
||||||
|
customer = new CustomerDto(customerExist);
|
||||||
|
}
|
||||||
|
|
||||||
|
var playsExist = game.getPlays();
|
||||||
|
if (playsExist != null && !playsExist.isEmpty()){
|
||||||
|
plays = playsExist.stream().map(PlayDto::new).toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
public void setName(String name){
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription(){
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
public void setDescription(String description){
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CustomerDto getCustomer(){
|
||||||
|
return customer;
|
||||||
|
}
|
||||||
|
public void setCustomer(CustomerDto customer){
|
||||||
|
this.customer = customer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<PlayDto> getPlays(){
|
||||||
|
return plays;
|
||||||
|
}
|
||||||
|
public void setPlays(List<PlayDto> plays){
|
||||||
|
this.plays = plays;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getId(){
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
public void setId(Long id){
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package com.example.demo.plays.api;
|
package com.example.demo.dtos;
|
||||||
|
|
||||||
|
import com.example.demo.models.Play;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -14,9 +15,26 @@ public class PlayDto {
|
|||||||
private Date date;
|
private Date date;
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private Long game;
|
private GameDto game;
|
||||||
|
|
||||||
private List<Long> users;
|
private List<CustomerDto> customers;
|
||||||
|
|
||||||
|
public PlayDto(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public PlayDto(Play play){
|
||||||
|
description = play.getDescription();
|
||||||
|
date = play.getDate();
|
||||||
|
|
||||||
|
var existGame = play.getGame();
|
||||||
|
if (existGame != null){
|
||||||
|
game = new GameDto(existGame);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
game = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public String getDescription(){
|
public String getDescription(){
|
||||||
return description;
|
return description;
|
||||||
@ -32,18 +50,18 @@ public class PlayDto {
|
|||||||
this.date = date;
|
this.date = date;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getGame(){
|
public GameDto getGame(){
|
||||||
return game;
|
return game;
|
||||||
}
|
}
|
||||||
public void setGame(Long game){
|
public void setGame(GameDto game){
|
||||||
this.game = game;
|
this.game = game;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Long> getUsers(){
|
public List<CustomerDto> getCustomers(){
|
||||||
return users;
|
return customers;
|
||||||
}
|
}
|
||||||
public void setUsers(List<Long> users){
|
public void setCustomers(List<CustomerDto> customers){
|
||||||
this.users = users;
|
this.customers = customers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getId(){
|
public Long getId(){
|
@ -1,61 +0,0 @@
|
|||||||
package com.example.demo.games.api;
|
|
||||||
|
|
||||||
import com.example.demo.core.config.Constants;
|
|
||||||
import com.example.demo.games.service.GameService;
|
|
||||||
import com.example.demo.games.model.GameEntity;
|
|
||||||
import jakarta.validation.Valid;
|
|
||||||
import org.modelmapper.ModelMapper;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
@RequestMapping(Constants.API_URL + "game")
|
|
||||||
public class GameController {
|
|
||||||
private final GameService gameService;
|
|
||||||
private final ModelMapper modelMapper;
|
|
||||||
|
|
||||||
public GameController(GameService gameService, ModelMapper modelMapper){
|
|
||||||
this.gameService = gameService;
|
|
||||||
this.modelMapper = modelMapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
private GameDto toDto(GameEntity entity){
|
|
||||||
return modelMapper.map(entity, GameDto.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
private GameEntity toEntity(GameDto dto){
|
|
||||||
return modelMapper.map(dto, GameEntity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping
|
|
||||||
public List<GameDto> getAll() {
|
|
||||||
return gameService.getAll().stream().map(this::toDto).toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/user/{userId}")
|
|
||||||
public List<GameDto> getByUser(@PathVariable Long userId) {
|
|
||||||
return gameService.getByUser(userId).stream().map(this::toDto).toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/{id}")
|
|
||||||
public GameDto get(@PathVariable(name = "id") long id) {
|
|
||||||
return toDto(gameService.get(id));
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping
|
|
||||||
public GameDto create(@RequestBody @Valid GameDto dto, @RequestParam Long userId) {
|
|
||||||
return toDto(gameService.create(userId, toEntity(dto)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@PutMapping("/{id}")
|
|
||||||
public GameDto update(@PathVariable(name = "id") long id, @RequestBody GameDto dto) {
|
|
||||||
return toDto(gameService.update(id, toEntity(dto)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@DeleteMapping("/{id}")
|
|
||||||
public GameDto delete(@PathVariable(name = "id") long id)
|
|
||||||
{
|
|
||||||
return toDto(gameService.delete(id));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,54 +0,0 @@
|
|||||||
package com.example.demo.games.api;
|
|
||||||
|
|
||||||
import jakarta.validation.constraints.Min;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class GameDto {
|
|
||||||
private Long id;
|
|
||||||
@NotNull
|
|
||||||
@Min(2)
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
private String description;
|
|
||||||
|
|
||||||
private Long user;
|
|
||||||
|
|
||||||
private List<Long> plays;
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
public void setName(String name){
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDescription(){
|
|
||||||
return description;
|
|
||||||
}
|
|
||||||
public void setDescription(String description){
|
|
||||||
this.description = description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getUser(){
|
|
||||||
return user;
|
|
||||||
}
|
|
||||||
public void setUser(Long user){
|
|
||||||
this.user = user;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Long> getPlays(){
|
|
||||||
return plays;
|
|
||||||
}
|
|
||||||
public void setPlays(List<Long> plays){
|
|
||||||
this.plays = plays;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId(){
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
public void setId(Long id){
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,61 +0,0 @@
|
|||||||
package com.example.demo.games.model;
|
|
||||||
|
|
||||||
import com.example.demo.core.model.BaseEntity;
|
|
||||||
import com.example.demo.plays.model.PlayEntity;
|
|
||||||
import com.example.demo.users.model.UserEntity;
|
|
||||||
import jakarta.persistence.*;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
@Table(name = "game")
|
|
||||||
public class GameEntity extends BaseEntity {
|
|
||||||
@Column(nullable = false, unique = true, length = 100)
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@Column(length = 500)
|
|
||||||
private String description;
|
|
||||||
|
|
||||||
@ManyToOne
|
|
||||||
@JoinColumn(name = "userId")
|
|
||||||
private UserEntity user;
|
|
||||||
|
|
||||||
@OneToMany(mappedBy = "game", cascade = CascadeType.ALL, orphanRemoval = true)
|
|
||||||
@OrderBy("date desc")
|
|
||||||
List<PlayEntity> plays;
|
|
||||||
|
|
||||||
public GameEntity() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public GameEntity(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName(){
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
public void setName(String name){
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDescription(){
|
|
||||||
return description;
|
|
||||||
}
|
|
||||||
public void setDescription(String description){
|
|
||||||
this.description = description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public UserEntity getUser(){
|
|
||||||
return user;
|
|
||||||
}
|
|
||||||
public void setUser(UserEntity user){
|
|
||||||
this.user = user;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<PlayEntity> getPlays(){
|
|
||||||
return plays;
|
|
||||||
}
|
|
||||||
public void setPlays(List<PlayEntity> plays){
|
|
||||||
this.plays = plays;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
package com.example.demo.games.repository;
|
|
||||||
import com.example.demo.games.model.GameEntity;
|
|
||||||
import org.springframework.data.repository.CrudRepository;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public interface GameRepository extends CrudRepository<GameEntity, Long> {
|
|
||||||
List<GameEntity> findByUserId(long UserId);
|
|
||||||
}
|
|
@ -1,75 +0,0 @@
|
|||||||
package com.example.demo.games.service;
|
|
||||||
|
|
||||||
import com.example.demo.core.error.NotFoundException;
|
|
||||||
import com.example.demo.games.model.GameEntity;
|
|
||||||
import com.example.demo.games.repository.GameRepository;
|
|
||||||
import com.example.demo.users.model.UserEntity;
|
|
||||||
import com.example.demo.users.repository.UserRepository;
|
|
||||||
import com.example.demo.users.service.UserService;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.stream.StreamSupport;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class GameService {
|
|
||||||
private final GameRepository repository;
|
|
||||||
private final UserService userService;
|
|
||||||
public GameService(
|
|
||||||
GameRepository repository,
|
|
||||||
UserService userService){
|
|
||||||
this.repository = repository;
|
|
||||||
this.userService = userService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(readOnly = true)
|
|
||||||
public List<GameEntity> getAll()
|
|
||||||
{
|
|
||||||
return StreamSupport.stream(repository.findAll().spliterator(), false).toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(readOnly = true)
|
|
||||||
public List<GameEntity> getByUser(long userId)
|
|
||||||
{
|
|
||||||
return repository.findByUserId(userId);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(readOnly = true)
|
|
||||||
public GameEntity get(long id){
|
|
||||||
return repository.findById(id)
|
|
||||||
.orElseThrow(() -> new NotFoundException(UserEntity.class, id));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional
|
|
||||||
public GameEntity create(long userId, GameEntity entity){
|
|
||||||
if (entity == null) {
|
|
||||||
throw new IllegalArgumentException("Entity is null");
|
|
||||||
}
|
|
||||||
|
|
||||||
final UserEntity existsUser = userService.get(userId);
|
|
||||||
entity.setUser(existsUser);
|
|
||||||
|
|
||||||
return repository.save(entity);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional
|
|
||||||
public GameEntity update(long id, GameEntity entity){
|
|
||||||
final GameEntity existEntity = get(id);
|
|
||||||
|
|
||||||
existEntity.setName(entity.getName());
|
|
||||||
existEntity.setDescription(entity.getDescription());
|
|
||||||
existEntity.setUser(entity.getUser());
|
|
||||||
|
|
||||||
return repository.save(existEntity);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional
|
|
||||||
public GameEntity delete(Long id){
|
|
||||||
final GameEntity existEntity = get(id);
|
|
||||||
repository.delete(existEntity);
|
|
||||||
return existEntity;
|
|
||||||
}
|
|
||||||
}
|
|
74
demo/src/main/java/com/example/demo/models/Customer.java
Normal file
74
demo/src/main/java/com/example/demo/models/Customer.java
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
package com.example.demo.models;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class Customer {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||||
|
private long id;
|
||||||
|
|
||||||
|
@Column(unique = true, length = 50)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@OneToMany(mappedBy = "customer", cascade=CascadeType.REMOVE)
|
||||||
|
@OrderBy("name ASC")
|
||||||
|
private List<Game> games = new ArrayList<>();
|
||||||
|
|
||||||
|
@ManyToMany
|
||||||
|
@OrderBy("date desc")
|
||||||
|
private List<Play> plays = new ArrayList<>();
|
||||||
|
|
||||||
|
public Customer() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public Customer(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) return true;
|
||||||
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
|
Customer cart = (Customer) o;
|
||||||
|
return Objects.equals(name, cart.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getId(){
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName(){
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
public void setName(String name){
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Game> getGames(){
|
||||||
|
return games;
|
||||||
|
}
|
||||||
|
public void setGames(List<Game> games){
|
||||||
|
this.games = games;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Play> getPlays(){
|
||||||
|
return plays;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPlays(List<Play> plays){
|
||||||
|
this.plays = plays;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean addPlay(Play play){
|
||||||
|
return plays.add(play);
|
||||||
|
}
|
||||||
|
}
|
88
demo/src/main/java/com/example/demo/models/Game.java
Normal file
88
demo/src/main/java/com/example/demo/models/Game.java
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
package com.example.demo.models;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class Game {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||||
|
private long id;
|
||||||
|
|
||||||
|
private long customerId;
|
||||||
|
|
||||||
|
@Column(length = 50)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Column(length = 500)
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "сustomerId", updatable = false, insertable = false)
|
||||||
|
private Customer customer;
|
||||||
|
|
||||||
|
@OneToMany(mappedBy = "game", cascade = CascadeType.ALL, orphanRemoval = true)
|
||||||
|
@OrderBy("date desc")
|
||||||
|
Set<Play> plays = new HashSet<>();
|
||||||
|
|
||||||
|
public Game() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public Game(String name, String description, Customer customer) {
|
||||||
|
this.name = name;
|
||||||
|
this.customer = customer;
|
||||||
|
this.customerId = customer.getId();
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
@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(customerId, game.customerId) && Objects.equals(name, game.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(customerId, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName(){
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
public void setName(String name){
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription(){
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
public void setDescription(String description){
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Customer getCustomer(){
|
||||||
|
return customer;
|
||||||
|
}
|
||||||
|
public void setCustomer(Customer customer){
|
||||||
|
this.customer = customer;
|
||||||
|
this.customerId = customer.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getCustomerId() {
|
||||||
|
return customerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<Play> getPlays(){
|
||||||
|
return plays;
|
||||||
|
}
|
||||||
|
public void setPlays(Set<Play> plays){
|
||||||
|
this.plays = plays;
|
||||||
|
}
|
||||||
|
}
|
88
demo/src/main/java/com/example/demo/models/Play.java
Normal file
88
demo/src/main/java/com/example/demo/models/Play.java
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
package com.example.demo.models;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class Play {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||||
|
private long id;
|
||||||
|
|
||||||
|
private long gameId;
|
||||||
|
|
||||||
|
@Column(length = 500)
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private Date date;
|
||||||
|
|
||||||
|
@ManyToOne()
|
||||||
|
@JoinColumn(name = "gameId", updatable = false, insertable = false)
|
||||||
|
private Game game;
|
||||||
|
|
||||||
|
@ManyToMany()
|
||||||
|
@OrderBy("name asc")
|
||||||
|
private List<Customer> customers = new ArrayList<>();
|
||||||
|
|
||||||
|
public Play() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public Play(Game game, Date date, String description){
|
||||||
|
this.description = description;
|
||||||
|
this.date = date;
|
||||||
|
this.game = game;
|
||||||
|
this.gameId = game.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) return true;
|
||||||
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
|
Play cart = (Play) o;
|
||||||
|
return Objects.equals(gameId, cart.gameId) && Objects.equals(date, cart.date);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(gameId, date);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription(){
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
public void setDescription(String description){
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDate(){
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
public void setDate(Date date){
|
||||||
|
this.date = date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Game getGame(){
|
||||||
|
return game;
|
||||||
|
}
|
||||||
|
public void setGame(Game game){
|
||||||
|
this.game = game;
|
||||||
|
this.gameId = game.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Customer> getCustomers(){
|
||||||
|
return customers;
|
||||||
|
}
|
||||||
|
public void setCustomers(List<Customer> customers){
|
||||||
|
this.customers = customers;
|
||||||
|
}
|
||||||
|
}
|
@ -1,63 +0,0 @@
|
|||||||
package com.example.demo.plays.api;
|
|
||||||
|
|
||||||
import com.example.demo.core.config.Constants;
|
|
||||||
import com.example.demo.games.api.GameDto;
|
|
||||||
import com.example.demo.games.model.GameEntity;
|
|
||||||
import com.example.demo.plays.model.PlayEntity;
|
|
||||||
import com.example.demo.plays.service.PlayService;
|
|
||||||
import com.example.demo.users.api.UserDto;
|
|
||||||
import com.example.demo.users.model.UserEntity;
|
|
||||||
import jakarta.validation.Valid;
|
|
||||||
import org.modelmapper.ModelMapper;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
@RequestMapping(Constants.API_URL + "/tables")
|
|
||||||
public class PlayController {
|
|
||||||
private final PlayService playService;
|
|
||||||
private final ModelMapper modelMapper;
|
|
||||||
|
|
||||||
public PlayController(PlayService playService, ModelMapper modelMapper){
|
|
||||||
|
|
||||||
this.playService = playService;
|
|
||||||
this.modelMapper = modelMapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
private PlayDto toDto(PlayEntity entity) {
|
|
||||||
return modelMapper.map(entity, PlayDto.class);
|
|
||||||
}
|
|
||||||
private PlayEntity toEntity(PlayDto dto){
|
|
||||||
return modelMapper.map(dto, PlayEntity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping
|
|
||||||
public List<PlayDto> getAll()
|
|
||||||
{
|
|
||||||
return playService.getAll().stream().map(this::toDto).toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/{id}")
|
|
||||||
public PlayDto get(@PathVariable(name = "id") long id)
|
|
||||||
{
|
|
||||||
return toDto(playService.get(id));
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/")
|
|
||||||
public PlayDto create(@RequestBody @Valid PlayDto dto) {
|
|
||||||
|
|
||||||
return toDto(playService.create(toEntity(dto)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@PutMapping("/{id}")
|
|
||||||
public PlayDto update(@PathVariable(name = "id") long id, @RequestBody PlayDto dto) {
|
|
||||||
return toDto(playService.update(id, toEntity(dto)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@DeleteMapping("/{id}")
|
|
||||||
public PlayDto delete(@PathVariable(name = "id") long id)
|
|
||||||
{
|
|
||||||
return toDto(playService.delete(id));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,62 +0,0 @@
|
|||||||
package com.example.demo.plays.model;
|
|
||||||
|
|
||||||
import com.example.demo.core.model.BaseEntity;
|
|
||||||
import com.example.demo.games.model.GameEntity;
|
|
||||||
import com.example.demo.users.model.UserEntity;
|
|
||||||
import jakarta.persistence.*;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
@Table(name = "play")
|
|
||||||
public class PlayEntity extends BaseEntity {
|
|
||||||
@Column(length = 500)
|
|
||||||
private String description;
|
|
||||||
|
|
||||||
@Column(nullable = false)
|
|
||||||
private Date date;
|
|
||||||
|
|
||||||
@ManyToOne
|
|
||||||
@JoinColumn(name = "gameId")
|
|
||||||
private GameEntity game;
|
|
||||||
|
|
||||||
@ManyToMany
|
|
||||||
private Set<UserEntity> users;
|
|
||||||
|
|
||||||
public PlayEntity() {
|
|
||||||
|
|
||||||
}
|
|
||||||
public PlayEntity(Date date, String description){
|
|
||||||
this.description = description;
|
|
||||||
this.date = date;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDescription(){
|
|
||||||
return description;
|
|
||||||
}
|
|
||||||
public void setDescription(String description){
|
|
||||||
this.description = description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getDate(){
|
|
||||||
return date;
|
|
||||||
}
|
|
||||||
public void setDate(Date date){
|
|
||||||
this.date = date;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GameEntity getGame(){
|
|
||||||
return game;
|
|
||||||
}
|
|
||||||
public void setGame(GameEntity game){
|
|
||||||
this.game = game;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set<UserEntity> getUsers(){
|
|
||||||
return users;
|
|
||||||
}
|
|
||||||
public void setUsers(Set<UserEntity> gamers){
|
|
||||||
this.users = gamers;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,13 +0,0 @@
|
|||||||
package com.example.demo.plays.repository;
|
|
||||||
|
|
||||||
import com.example.demo.plays.model.PlayEntity;
|
|
||||||
import org.springframework.data.jpa.repository.Query;
|
|
||||||
import org.springframework.data.repository.CrudRepository;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public interface PlayRepository extends CrudRepository<PlayEntity, Long> {
|
|
||||||
List<PlayEntity> findByUserId(long userId);
|
|
||||||
|
|
||||||
List<PlayEntity> findByGameId(long gameId);
|
|
||||||
}
|
|
@ -1,92 +0,0 @@
|
|||||||
package com.example.demo.plays.service;
|
|
||||||
|
|
||||||
import com.example.demo.core.error.NotFoundException;
|
|
||||||
import com.example.demo.games.model.GameEntity;
|
|
||||||
import com.example.demo.games.service.GameService;
|
|
||||||
import com.example.demo.plays.model.PlayEntity;
|
|
||||||
import com.example.demo.plays.repository.PlayRepository;
|
|
||||||
import com.example.demo.users.model.UserEntity;
|
|
||||||
import com.example.demo.users.service.UserService;
|
|
||||||
import jakarta.persistence.Id;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.StreamSupport;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class PlayService {
|
|
||||||
private final PlayRepository repository;
|
|
||||||
private final UserService userService;
|
|
||||||
private final GameService gameService;
|
|
||||||
public PlayService(PlayRepository repository, UserService userService, GameService gameService)
|
|
||||||
{
|
|
||||||
this.repository = repository;
|
|
||||||
this.userService = userService;
|
|
||||||
this.gameService = gameService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(readOnly = true)
|
|
||||||
public List<PlayEntity> getAll(){
|
|
||||||
return StreamSupport.stream(repository.findAll().spliterator(), false).toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(readOnly = true)
|
|
||||||
public List<PlayEntity> getByUserId(long userId){
|
|
||||||
return repository.findByUserId(userId);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(readOnly = true)
|
|
||||||
public List<PlayEntity> getByGameId(long gameId){
|
|
||||||
return repository.findByGameId(gameId);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional
|
|
||||||
public PlayEntity get(Long id){
|
|
||||||
return repository.findById(id)
|
|
||||||
.orElseThrow(() -> new NotFoundException(UserEntity.class, id));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional
|
|
||||||
public PlayEntity create(PlayEntity entity){
|
|
||||||
if (entity == null) {
|
|
||||||
throw new IllegalArgumentException("Entity is null");
|
|
||||||
}
|
|
||||||
|
|
||||||
final GameEntity existGame = gameService.get(entity.getGame().getId());
|
|
||||||
entity.setGame(existGame);
|
|
||||||
|
|
||||||
Set<UserEntity> users = new HashSet<UserEntity>() {
|
|
||||||
};
|
|
||||||
entity.getUsers().forEach(user -> {
|
|
||||||
final UserEntity existUser = userService.get(user.getId());
|
|
||||||
users.add(existUser);
|
|
||||||
});
|
|
||||||
|
|
||||||
entity.setUsers(users);
|
|
||||||
|
|
||||||
return repository.save(entity);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional
|
|
||||||
public PlayEntity update(Long id, PlayEntity entity){
|
|
||||||
final PlayEntity existEntity = get(id);
|
|
||||||
|
|
||||||
existEntity.setDescription(entity.getDescription());
|
|
||||||
existEntity.setDate(entity.getDate());
|
|
||||||
existEntity.setGame(entity.getGame());
|
|
||||||
existEntity.setUsers(entity.getUsers());
|
|
||||||
|
|
||||||
return repository.save(existEntity);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional
|
|
||||||
public PlayEntity delete(Long id){
|
|
||||||
final PlayEntity existEntity = get(id);
|
|
||||||
repository.delete(existEntity);
|
|
||||||
return existEntity;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,56 @@
|
|||||||
|
package com.example.demo.services;
|
||||||
|
|
||||||
|
import com.example.demo.models.Customer;
|
||||||
|
import jakarta.persistence.EntityManager;
|
||||||
|
import jakarta.persistence.EntityNotFoundException;
|
||||||
|
import jakarta.persistence.PersistenceContext;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class CustomerService {
|
||||||
|
@PersistenceContext
|
||||||
|
private EntityManager em;
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public Customer addCustomer(String name) {
|
||||||
|
if(!StringUtils.hasText(name)){
|
||||||
|
throw new IllegalArgumentException("Empty name");
|
||||||
|
}
|
||||||
|
final Customer customer = new Customer(name);
|
||||||
|
em.persist(customer);
|
||||||
|
return customer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public Customer findCustomer(Long id){
|
||||||
|
final Customer customer = em.find(Customer.class, id);
|
||||||
|
if (customer == null){
|
||||||
|
throw new EntityNotFoundException(String.format("customer with id [%s] is not found", id));
|
||||||
|
}
|
||||||
|
return customer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public List<Customer> getAllCustomers(){
|
||||||
|
return em.createQuery("SELECT u FROM Customer u", Customer.class).getResultList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public Customer updateCustomer(Long id, String name){
|
||||||
|
final Customer currentCustomer = findCustomer(id);
|
||||||
|
if(StringUtils.hasText(name))
|
||||||
|
currentCustomer.setName(name);
|
||||||
|
return currentCustomer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public Customer deleteCustomer(Long id){
|
||||||
|
final Customer currentCustomer = findCustomer(id);
|
||||||
|
em.remove(currentCustomer);
|
||||||
|
return currentCustomer;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
package com.example.demo.services;
|
||||||
|
|
||||||
|
import com.example.demo.models.Game;
|
||||||
|
import com.example.demo.models.Customer;
|
||||||
|
import jakarta.persistence.EntityManager;
|
||||||
|
import jakarta.persistence.EntityNotFoundException;
|
||||||
|
import jakarta.persistence.PersistenceContext;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class GameService {
|
||||||
|
@PersistenceContext
|
||||||
|
private EntityManager em;
|
||||||
|
|
||||||
|
private final CustomerService customerService;
|
||||||
|
|
||||||
|
public GameService(CustomerService customerService){
|
||||||
|
this.customerService = customerService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public Game addGame(Long customerId, String name, String description){
|
||||||
|
if(!StringUtils.hasText(name)) {
|
||||||
|
throw new IllegalArgumentException("Empty name");
|
||||||
|
}
|
||||||
|
final Customer customer = customerService.findCustomer(customerId);
|
||||||
|
if (customer == null){
|
||||||
|
throw new IllegalArgumentException("customerId invalid");
|
||||||
|
}
|
||||||
|
final Game Game = new Game(name, description, customer);
|
||||||
|
em.persist(Game);
|
||||||
|
return Game;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public Game findGame(Long id){
|
||||||
|
final Game Game = em.find(Game.class, id);
|
||||||
|
if(Game==null){
|
||||||
|
throw new EntityNotFoundException(String.format("Game with id [%s] is not found", id));
|
||||||
|
}
|
||||||
|
return Game;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public List<Game> getAllGames(){
|
||||||
|
return em.createQuery("SELECT g FROM Game g", Game.class).getResultList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public Game updateGame(Long id, String name, String description){
|
||||||
|
final Game currentGame = findGame(id);
|
||||||
|
if(StringUtils.hasText(name))
|
||||||
|
currentGame.setName(name);
|
||||||
|
if(StringUtils.hasText(description))
|
||||||
|
currentGame.setDescription(description);
|
||||||
|
return currentGame;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public Game deleteGame(Long id){
|
||||||
|
final Game currentGame = findGame(id);
|
||||||
|
em.remove(currentGame);
|
||||||
|
return currentGame;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
package com.example.demo.services;
|
||||||
|
|
||||||
|
import com.example.demo.models.Game;
|
||||||
|
import com.example.demo.models.Play;
|
||||||
|
import com.example.demo.models.Customer;
|
||||||
|
import jakarta.persistence.EntityManager;
|
||||||
|
import jakarta.persistence.EntityNotFoundException;
|
||||||
|
import jakarta.persistence.PersistenceContext;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class PlayService {
|
||||||
|
@PersistenceContext
|
||||||
|
private EntityManager em;
|
||||||
|
|
||||||
|
private final GameService gameService;
|
||||||
|
private final CustomerService customerService;
|
||||||
|
|
||||||
|
public PlayService(GameService gameService, CustomerService customerService){
|
||||||
|
this.gameService = gameService;
|
||||||
|
this.customerService = customerService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public Play addPlay(Long gameId, Date date, String description){
|
||||||
|
final Game game = gameService.findGame(gameId);
|
||||||
|
|
||||||
|
if (game == null){
|
||||||
|
throw new IllegalArgumentException("gameId invalid");
|
||||||
|
}
|
||||||
|
|
||||||
|
final Play Play = new Play(game, date, description);
|
||||||
|
em.persist(Play);
|
||||||
|
return Play;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public Play findPlay(Long id){
|
||||||
|
final Play Play = em.find(Play.class, id);
|
||||||
|
if (Play == null){
|
||||||
|
throw new EntityNotFoundException(String.format("Play with id [%s] is not found", id));
|
||||||
|
}
|
||||||
|
return Play;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public List<Play> getAllPlays(){
|
||||||
|
return em.createQuery("SELECT p FROM Play p", Play.class).getResultList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public Play updatePlay(Long id, Date date, String description){
|
||||||
|
final Play currentPlay = findPlay(id);
|
||||||
|
|
||||||
|
if(StringUtils.hasText(description))
|
||||||
|
currentPlay.setDescription(description);
|
||||||
|
if(date != null)
|
||||||
|
currentPlay.setDate(date);
|
||||||
|
return currentPlay;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public Play deletePlay(Long id){
|
||||||
|
final Play currentPlay = findPlay(id);
|
||||||
|
em.remove(currentPlay);
|
||||||
|
return currentPlay;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public boolean addCustomer(Long id, Long customerId){
|
||||||
|
final Play currentPlay = findPlay(id);
|
||||||
|
final Customer customer = customerService.findCustomer(customerId);
|
||||||
|
|
||||||
|
return customer.addPlay(currentPlay);
|
||||||
|
}
|
||||||
|
}
|
@ -1,61 +0,0 @@
|
|||||||
package com.example.demo.users.api;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.example.demo.core.config.Constants;
|
|
||||||
import com.example.demo.users.model.UserEntity;
|
|
||||||
import com.example.demo.users.service.UserService;
|
|
||||||
import jakarta.validation.Valid;
|
|
||||||
import org.modelmapper.ModelMapper;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
@RequestMapping(Constants.API_URL + "/users")
|
|
||||||
public class UserController {
|
|
||||||
private final UserService userService;
|
|
||||||
private final ModelMapper modelMapper;
|
|
||||||
|
|
||||||
public UserController(UserService userService, ModelMapper modelMapper){
|
|
||||||
this.userService = userService;
|
|
||||||
this.modelMapper = modelMapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
private UserDto toDto(UserEntity entity) {
|
|
||||||
return modelMapper.map(entity, UserDto.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
private UserEntity toEntity(UserDto dto) {
|
|
||||||
return modelMapper.map(dto, UserEntity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping
|
|
||||||
public List<UserDto> getAll()
|
|
||||||
{
|
|
||||||
return userService.getAll()
|
|
||||||
.stream()
|
|
||||||
.map(this::toDto)
|
|
||||||
.toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/{id}")
|
|
||||||
public UserDto get(@PathVariable(name = "id") long id) {
|
|
||||||
return toDto(userService.get(id));
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping
|
|
||||||
public UserDto create(@RequestBody @Valid UserDto dto) {
|
|
||||||
return toDto(userService.create(toEntity(dto)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@PutMapping("/{id}")
|
|
||||||
public UserDto update(
|
|
||||||
@PathVariable(name = "id") long id,
|
|
||||||
@RequestBody UserDto dto) {
|
|
||||||
return toDto(userService.update(id, toEntity(dto)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@DeleteMapping("/{id}")
|
|
||||||
public UserDto delete(@PathVariable(name = "id") long id) {
|
|
||||||
return toDto(userService.delete(id));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,57 +0,0 @@
|
|||||||
package com.example.demo.users.api;
|
|
||||||
import jakarta.validation.constraints.*;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
|
|
||||||
public class UserDto {
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Min(2)
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@NotBlank
|
|
||||||
@Min(4)
|
|
||||||
private String login;
|
|
||||||
|
|
||||||
private List<Long> games;
|
|
||||||
|
|
||||||
private List<Long> plays;
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
public void setName(String name){
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogin()
|
|
||||||
{
|
|
||||||
return login;
|
|
||||||
}
|
|
||||||
public void setLogin(String login){
|
|
||||||
this.login = login;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Long> getGames() {
|
|
||||||
return games;
|
|
||||||
}
|
|
||||||
public void setGames(List<Long> games){
|
|
||||||
this.games = games;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Long> getPlays(){
|
|
||||||
return plays;
|
|
||||||
}
|
|
||||||
public void setPlays(List<Long> plays){
|
|
||||||
this.plays = plays;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId(){
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
public void setId(Long id){
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,62 +0,0 @@
|
|||||||
package com.example.demo.users.model;
|
|
||||||
|
|
||||||
import com.example.demo.core.model.BaseEntity;
|
|
||||||
import com.example.demo.games.model.GameEntity;
|
|
||||||
import com.example.demo.plays.model.PlayEntity;
|
|
||||||
import jakarta.persistence.*;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
@Table(name = "users")
|
|
||||||
public class UserEntity extends BaseEntity {
|
|
||||||
@Column(nullable = false, unique = true, length = 100)
|
|
||||||
private String name;
|
|
||||||
@Column(nullable = false, unique = true, length = 50)
|
|
||||||
private String login;
|
|
||||||
|
|
||||||
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
|
|
||||||
@OrderBy("name asc")
|
|
||||||
private List<GameEntity> games;
|
|
||||||
|
|
||||||
@ManyToMany(mappedBy = "usersPlays")
|
|
||||||
@OrderBy("date desc")
|
|
||||||
private List<PlayEntity> plays;
|
|
||||||
|
|
||||||
public UserEntity() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public UserEntity(String login, String name) {
|
|
||||||
this.login = login;
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName(){
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
public void setName(String name){
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLogin() {
|
|
||||||
return login;
|
|
||||||
}
|
|
||||||
public void setLogin(String login){
|
|
||||||
this.login = login;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<GameEntity> getGames(){
|
|
||||||
return games;
|
|
||||||
}
|
|
||||||
public void setGames(List<GameEntity> games){
|
|
||||||
this.games = games;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<PlayEntity> getPlays(){
|
|
||||||
return plays;
|
|
||||||
}
|
|
||||||
public void setPlays(List<PlayEntity> plays){
|
|
||||||
this.plays = plays;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
package com.example.demo.users.repository;
|
|
||||||
|
|
||||||
import com.example.demo.users.model.UserEntity;
|
|
||||||
import org.springframework.data.repository.CrudRepository;
|
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
public interface UserRepository extends CrudRepository<UserEntity, Long> {
|
|
||||||
Optional<UserEntity> findByLoginIgnoreCase(String login);
|
|
||||||
|
|
||||||
Optional<UserEntity> findByGameId(long gameId);
|
|
||||||
}
|
|
@ -1,74 +0,0 @@
|
|||||||
package com.example.demo.users.service;
|
|
||||||
|
|
||||||
import com.example.demo.core.error.NotFoundException;
|
|
||||||
import com.example.demo.games.repository.GameRepository;
|
|
||||||
import com.example.demo.games.service.GameService;
|
|
||||||
import com.example.demo.plays.repository.PlayRepository;
|
|
||||||
import com.example.demo.plays.service.PlayService;
|
|
||||||
import com.example.demo.users.model.UserEntity;
|
|
||||||
import com.example.demo.users.repository.UserRepository;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.stream.StreamSupport;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class UserService {
|
|
||||||
private final UserRepository repository;
|
|
||||||
|
|
||||||
public UserService(
|
|
||||||
UserRepository repository,
|
|
||||||
GameService gameService,
|
|
||||||
PlayService playService
|
|
||||||
){
|
|
||||||
this.repository = repository;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void checkLogin(String login) {
|
|
||||||
if (repository.findByLoginIgnoreCase(login).isPresent()) {
|
|
||||||
throw new IllegalArgumentException(
|
|
||||||
String.format("User with login %s is already exists", login));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(readOnly = true)
|
|
||||||
public List<UserEntity> getAll() {
|
|
||||||
return StreamSupport.stream(
|
|
||||||
repository.findAll().spliterator(), false).toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public UserEntity get(Long id){
|
|
||||||
return repository.findById(id)
|
|
||||||
.orElseThrow(() -> new NotFoundException(UserEntity.class, id));
|
|
||||||
}
|
|
||||||
@Transactional
|
|
||||||
public UserEntity create(UserEntity entity) {
|
|
||||||
if (entity == null) {
|
|
||||||
throw new IllegalArgumentException("Entity is null");
|
|
||||||
}
|
|
||||||
checkLogin(entity.getLogin());
|
|
||||||
|
|
||||||
return repository.save(entity);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional
|
|
||||||
public UserEntity update(long id, UserEntity entity) {
|
|
||||||
final UserEntity existsEntity = get(id);
|
|
||||||
|
|
||||||
checkLogin(entity.getLogin());
|
|
||||||
existsEntity.setLogin(entity.getLogin());
|
|
||||||
existsEntity.setName(entity.getName());
|
|
||||||
|
|
||||||
repository.save(existsEntity);
|
|
||||||
return existsEntity;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional
|
|
||||||
public UserEntity delete(long id) {
|
|
||||||
final UserEntity existsEntity = get(id);
|
|
||||||
repository.delete(existsEntity);
|
|
||||||
return existsEntity;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1 +1,11 @@
|
|||||||
spring.application.name=demo
|
spring.main.banner-mode=off
|
||||||
|
#server.port=8080
|
||||||
|
spring.datasource.url=jdbc:h2:file:./data
|
||||||
|
spring.datasource.driverClassName=org.h2.Driver
|
||||||
|
spring.datasource.username=sa
|
||||||
|
spring.datasource.password=123
|
||||||
|
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
|
||||||
|
spring.jpa.hibernate.ddl-auto=update
|
||||||
|
spring.h2.console.enabled=true
|
||||||
|
spring.h2.console.settings.trace=false
|
||||||
|
spring.h2.console.settings.web-allow-others=false
|
||||||
|
@ -1,65 +0,0 @@
|
|||||||
package com.example.demo.DemoApplicationTests;
|
|
||||||
|
|
||||||
import com.example.demo.core.error.NotFoundException;
|
|
||||||
import com.example.demo.games.model.GameEntity;
|
|
||||||
import com.example.demo.games.service.GameService;
|
|
||||||
import org.junit.jupiter.api.*;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@SpringBootTest
|
|
||||||
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
|
||||||
public class GameServiceTest {
|
|
||||||
@Autowired
|
|
||||||
private GameService gameService;
|
|
||||||
@Test
|
|
||||||
void getTest(){
|
|
||||||
Assertions.assertThrows(NotFoundException.class, () -> gameService.get(0L));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Order(1)
|
|
||||||
void createTest(){
|
|
||||||
Assertions.assertEquals(0, gameService.getAll().size());
|
|
||||||
gameService.create(new GameEntity(null, "Древний ужас"));
|
|
||||||
Assertions.assertEquals(1, gameService.getAll().size());
|
|
||||||
gameService.create(new GameEntity(null, "Покорение марса"));
|
|
||||||
Assertions.assertEquals(2, gameService.getAll().size());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Order(2)
|
|
||||||
void UpdateTest(){
|
|
||||||
var newEntity = new GameEntity(1L, "Аркхем");
|
|
||||||
Assertions.assertNotEquals(newEntity, gameService.get(1L));
|
|
||||||
final GameEntity newEntityCopy = gameService.update(1L, newEntity);
|
|
||||||
|
|
||||||
AssertionsEqualEntity(newEntityCopy, newEntity);
|
|
||||||
|
|
||||||
Assertions.assertEquals(2, gameService.getAll().size());
|
|
||||||
|
|
||||||
AssertionsEqualEntity(newEntity, gameService.get(1L));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Order(3)
|
|
||||||
void DeleteTest(){
|
|
||||||
Assertions.assertThrows(NullPointerException.class, () -> gameService.delete(3L));
|
|
||||||
Assertions.assertEquals(2L, gameService.getAll().size());
|
|
||||||
gameService.delete(1L);
|
|
||||||
Assertions.assertEquals(1L, gameService.getAll().size());
|
|
||||||
final GameEntity last = gameService.get(2L);
|
|
||||||
Assertions.assertEquals(2L, last.getId());
|
|
||||||
|
|
||||||
final GameEntity newEntity = gameService.create(new GameEntity(null, "Крылья"));
|
|
||||||
Assertions.assertEquals(2L, gameService.getAll().size());
|
|
||||||
Assertions.assertEquals(3L, newEntity.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AssertionsEqualEntity(GameEntity l, GameEntity r){
|
|
||||||
Assertions.assertEquals(l.getName(), r.getName());
|
|
||||||
Assertions.assertEquals(l.getId(), r.getId());
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,64 +0,0 @@
|
|||||||
package com.example.demo.DemoApplicationTests;
|
|
||||||
|
|
||||||
import com.example.demo.core.error.NotFoundException;
|
|
||||||
import com.example.demo.users.model.UserEntity;
|
|
||||||
import com.example.demo.users.service.UserService;
|
|
||||||
import org.junit.jupiter.api.*;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@SpringBootTest
|
|
||||||
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
|
||||||
public class UserServiceTest {
|
|
||||||
private boolean equalEntity(UserEntity l, UserEntity r){
|
|
||||||
return l.getId() == r.getId() &&
|
|
||||||
Objects.equals(l.getName(), r.getName()) &&
|
|
||||||
Objects.equals(l.getLogin(), r.getLogin()) &&
|
|
||||||
Objects.equals(l.getPassword(), r.getPassword());
|
|
||||||
}
|
|
||||||
@Autowired
|
|
||||||
private UserService userService;
|
|
||||||
@Test
|
|
||||||
void getTest(){
|
|
||||||
Assertions.assertThrows(NotFoundException.class, () -> userService.get(0L));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Order(1)
|
|
||||||
void createTest(){
|
|
||||||
Assertions.assertEquals(0, userService.getAll().size());
|
|
||||||
userService.create(new UserEntity(null, "cawa", "cacawa", "1111"));
|
|
||||||
Assertions.assertEquals(1, userService.getAll().size());
|
|
||||||
userService.create(new UserEntity(null, "lambada", "lam", "0000"));
|
|
||||||
Assertions.assertEquals(2, userService.getAll().size());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Order(2)
|
|
||||||
void UpdateTest(){
|
|
||||||
var newEntity = new UserEntity(1L, "name", "login", "password");
|
|
||||||
Assertions.assertNotEquals(newEntity, userService.get(1L));
|
|
||||||
final UserEntity newEntityCopy = userService.update(
|
|
||||||
1L, newEntity);
|
|
||||||
Assertions.assertTrue(equalEntity(newEntityCopy, newEntity));
|
|
||||||
Assertions.assertEquals(2L, userService.getAll().size());
|
|
||||||
Assertions.assertTrue(equalEntity(newEntity, userService.get(1L)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Order(3)
|
|
||||||
void DeleteTest(){
|
|
||||||
Assertions.assertThrows(NullPointerException.class, () -> userService.delete(3L));
|
|
||||||
Assertions.assertEquals(2L, userService.getAll().size());
|
|
||||||
userService.delete(1L);
|
|
||||||
Assertions.assertEquals(1L, userService.getAll().size());
|
|
||||||
final UserEntity last = userService.get(2L);
|
|
||||||
Assertions.assertEquals(2L, last.getId());
|
|
||||||
|
|
||||||
final UserEntity newEntity = userService.create(new UserEntity(null, "1", "1", "1"));
|
|
||||||
Assertions.assertEquals(2L, userService.getAll().size());
|
|
||||||
Assertions.assertEquals(3L, newEntity.getId());
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user