Skip to content

UUID #1

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

Open
wants to merge 2 commits into
base: master
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
5 changes: 3 additions & 2 deletions src/main/java/org/amirziya/todoweb/boot/SpringBoot.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import java.util.UUID;

@Component
@RequiredArgsConstructor
public class SpringBoot implements CommandLineRunner {

@Autowired
TodoRepo todoRepo;
public final TodoRepo todoRepo;

@Transactional
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.amirziya.todoweb.model.Todo;
import org.amirziya.todoweb.repo.TodoRepo;
import org.amirziya.todoweb.service.TodoService;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Optional;
import java.util.UUID;

@Slf4j
@RestController
Expand All @@ -21,15 +23,16 @@ public class TodoController {
public static final String TODO_ID = TODO_PATCH + "/" + "{todoId}";

public final TodoService todoService;
public final TodoRepo todoRepo;


@GetMapping(value = TODO_PATCH)
public ResponseEntity<List<Todo>> listTodo(){
return new ResponseEntity<>(todoService.getAll(), HttpStatus.OK);
return new ResponseEntity<>(todoRepo.findAll(), HttpStatus.OK);
}

@GetMapping(value = TODO_ID)
public ResponseEntity<Optional<Todo>> getTodoById(@PathVariable("todoId") int todoId){
public ResponseEntity<Optional<Todo>> getTodoById(@PathVariable("todoId") UUID todoId){
return new ResponseEntity<>(todoService.getById(todoId),HttpStatus.FOUND);
}

Expand All @@ -42,13 +45,13 @@ public ResponseEntity<Todo> createTodo(@RequestBody Todo todo){
}

@DeleteMapping(TODO_ID)
public ResponseEntity<Todo> deleteTodo(@PathVariable("todoId") int todoId){
public ResponseEntity<Todo> deleteTodo(@PathVariable("todoId") UUID todoId){
todoService.delete(todoId);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}

@PutMapping(TODO_ID)
public ResponseEntity<Todo> updateTodo(@PathVariable("todoId") int todoId,@RequestBody Todo todo){
public ResponseEntity<Todo> updateTodo(@PathVariable("todoId") UUID todoId, @RequestBody Todo todo){
todoService.update(todoId, todo);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
Expand Down
11 changes: 4 additions & 7 deletions src/main/java/org/amirziya/todoweb/model/Todo.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
package org.amirziya.todoweb.model;


import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.UUID;

@Data
Expand All @@ -20,8 +16,9 @@
public class Todo {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@GeneratedValue(generator = "UUID")
// @Column(length = 36, columnDefinition = "varchar", updatable = false, nullable = false)
private UUID id;
private String title;
private String description;
private boolean isDO;
Expand Down
8 changes: 3 additions & 5 deletions src/main/java/org/amirziya/todoweb/repo/TodoRepo.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@

import org.amirziya.todoweb.model.Todo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.UUID;

import java.util.List;

@Repository
public interface TodoRepo extends JpaRepository<Todo,Integer> {
Todo findById(int dd);
public interface TodoRepo extends JpaRepository<Todo,UUID> {

}
7 changes: 4 additions & 3 deletions src/main/java/org/amirziya/todoweb/service/TodoService.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@

import java.util.List;
import java.util.Optional;
import java.util.UUID;

public interface TodoService {
List<Todo> getAll();
Optional<Todo> getById(int id);
Optional<Todo> getById(UUID id);
Todo save(Todo todo);
void update(int id, Todo upTodo);
void delete(int id);
void update(UUID id, Todo upTodo);
void delete(UUID id);
}
34 changes: 34 additions & 0 deletions src/main/java/org/amirziya/todoweb/service/TodoServiceImpJpa.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package org.amirziya.todoweb.service;

import org.amirziya.todoweb.model.Todo;

import java.util.List;
import java.util.Optional;
import java.util.UUID;

public class TodoServiceImpJpa implements TodoService {
@Override
public List<Todo> getAll() {
return List.of();
}

@Override
public Optional<Todo> getById(UUID id) {
return Optional.empty();
}

@Override
public Todo save(Todo todo) {
return null;
}

@Override
public void update(UUID id, Todo upTodo) {

}

@Override
public void delete(UUID id) {

}
}
26 changes: 14 additions & 12 deletions src/main/java/org/amirziya/todoweb/service/TodoServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,20 @@
@Service
public class TodoServiceImpl implements TodoService {


@Autowired
TodoRepo todoRepo;
public TodoRepo todoRepo;


@Override
public List<Todo> getAll() {

return new ArrayList<> (todoRepo.findAll());
return todoRepo.findAll();
}

@Override
public Optional<Todo> getById(int id) {
return Optional.ofNullable(todoRepo.findById(id));
public Optional<Todo> getById(UUID id) {

return todoRepo.findById(id);
}

@Override
Expand All @@ -38,17 +39,18 @@ public Todo save(Todo todo) {
}

@Override
public void update(int id, Todo todo) {
Todo updateTodo = todoRepo.findById(id);
updateTodo.setDescription(todo.getDescription());
updateTodo.setTitle(todo.getTitle());
updateTodo.setDO(todo.isDO());
todoRepo.save(updateTodo);
public void update(UUID id, Todo todo) {
todoRepo.findById(id).ifPresent(foundTodo -> {
foundTodo.setDescription(todo.getDescription());
foundTodo.setDO(todo.isDO());
foundTodo.setTitle(todo.getTitle());
todoRepo.save(foundTodo);
});
}


@Override
public void delete(int id) {
public void delete(UUID id) {
todoRepo.deleteById(id);
}
}
4 changes: 2 additions & 2 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
spring.application.name=todo-web
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/yourDB
spring.datasource.url=jdbc:postgresql://localhost:5432/Tododb
spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.username=postgres
spring.datasource.password=yourPassword
spring.datasource.password=amirziya
spring.jpa.show-sql=true
14 changes: 12 additions & 2 deletions src/test/java/org/amirziya/todoweb/boot/SpringBootApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,31 @@


import org.amirziya.todoweb.repo.TodoRepo;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.context.SpringBootTest;

import static org.assertj.core.api.Assertions.*;

@SpringBootTest
@DataJpaTest
class SpringBootApp {

@Autowired
TodoRepo todoRepo;

SpringBoot springBoot;

@BeforeEach
void setUp() {
springBoot = new SpringBoot(todoRepo);
}

@Test
void countTodos(){
assertThat(todoRepo.count()).isEqualTo(3);
springBoot.run((String) null);
assertThat(todoRepo.count()).isEqualTo(3);
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import java.util.Optional;
import java.util.UUID;

import static org.hamcrest.Matchers.is;
import static org.mockito.BDDMockito.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
Expand All @@ -34,7 +36,7 @@ class TodoServiceImplTest {
ObjectMapper objectMapper;

@Captor
ArgumentCaptor<Integer> uuidArgumentCaptor;
ArgumentCaptor<UUID> uuidArgumentCaptor;


TodoServiceImpl todoServiceImp;
Expand All @@ -49,7 +51,7 @@ void setUp(){
@Test
void get_Todo_By_Id() throws Exception {
Todo testodo = Todo.builder()
.id(1)
.id(UUID.randomUUID())
.build();
given(todoService.getById(testodo.getId())).willReturn(Optional.of(testodo));
mockMvc.perform(get(TodoController.TODO_ID,testodo.getId()).contentType(MediaType.APPLICATION_JSON))
Expand All @@ -69,8 +71,8 @@ void get_All_And_Count() throws Exception {

@Test
void crete_Todo() throws Exception {
Todo todo = todoServiceImp.getAll().get(0);
given(todoService.save(any(Todo.class))).willReturn(todoServiceImp.getAll().get(1));
Todo todo = todoServiceImp.getAll().get().get(0);
given(todoService.save(any(Todo.class))).willReturn(todoServiceImp.getAll().get().get(1));
mockMvc.perform(post(TodoController.TODO_PATCH)
.accept(MediaType.APPLICATION_JSON)
.contentType(MediaType.APPLICATION_JSON)
Expand All @@ -80,7 +82,7 @@ void crete_Todo() throws Exception {
}
@Test
void delete_Todo() throws Exception{
Todo delTodo = todoServiceImp.getAll().get(0);
Todo delTodo = todoServiceImp.getAll().get().get(0);
mockMvc.perform(delete(TodoController.TODO_ID,delTodo.getId())
.accept(MediaType.APPLICATION_JSON)).andExpect(status().isNoContent());

Expand All @@ -91,15 +93,15 @@ void delete_Todo() throws Exception{

@Test
void updateTodo()throws Exception{
Todo updateTodo = todoServiceImp.getAll().get(0);
Todo updateTodo = todoServiceImp.getAll().get().get(0);
String des = "Work on Project !";
updateTodo.setDescription(des);
mockMvc.perform(put(TodoController.TODO_ID,updateTodo.getId())
.accept(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(updateTodo))
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isNoContent());
verify(todoService).update(any(Integer.class),any(Todo.class));
verify(todoService).update(any(UUID.class),any(Todo.class));
Assertions.assertThat(updateTodo.getDescription()).isEqualTo(des);
}
}