diff --git a/pom.xml b/pom.xml
index b0a6389..df168aa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,6 +26,24 @@
org.springframework.boot
spring-boot-starter-test
test
+
+
+ org.eclipse.persistence
+ eclipselink
+ 2.5.0
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ mysql
+ mysql-connector-java
+ runtime
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/SpringBootCodingTestApplication.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/SpringBootCodingTestApplication.java
index 14e2bbf..5f4d28a 100644
--- a/src/main/java/com/accenture/codingtest/springbootcodingtest/SpringBootCodingTestApplication.java
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/SpringBootCodingTestApplication.java
@@ -2,8 +2,11 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-@SpringBootApplication
+@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
+@EnableJpaRepositories("com.accenture.codingtest.springbootcodingtest.repository")
public class SpringBootCodingTestApplication {
public static void main(String[] args) {
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/ProjectController.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/ProjectController.java
new file mode 100644
index 0000000..490394a
--- /dev/null
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/ProjectController.java
@@ -0,0 +1,67 @@
+package com.accenture.codingtest.springbootcodingtest.controller;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PatchMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import com.accenture.codingtest.springbootcodingtest.model.Project;
+import com.accenture.codingtest.springbootcodingtest.service.ProjectService;
+
+
+@Controller("/api/v1/projects")
+public class ProjectController {
+ @Autowired
+ private ProjectService projectService;
+
+ public ProjectController(ProjectService projectService) {
+ super();
+ this.projectService = projectService;
+ }
+
+// GET retrieve all resources (ex. GET /api/v1/projects)
+ @GetMapping
+ public List retrieveAllProjects() {
+ return projectService.findAll();
+ }
+
+
+// GET retrieve one resource by id (ex. GET /api/v1/projects/{project_id})
+ @GetMapping("/{project_id}")
+ public Optional getProjectById(@PathVariable("project_id") UUID id) {
+ return projectService.findById(id);
+ }
+// POST create one resource (ex. POST /api/v1/projects)
+
+ @PostMapping
+ private void createProject(@RequestBody Project project) {
+ projectService.createProject(project);
+ }
+// PUT update one resource idempotent (ex. PUT /api/v1/projects/{project_id})
+ @PutMapping("/{project_id}")
+ private void updateProject(@RequestBody Project project, @PathVariable("project_id") UUID id) {
+ projectService.updateProject(project, id);
+ }
+
+
+// PATCH update one resource (ex. PATCH /api/v1/projects/{project_id})
+ @PatchMapping("/{project_id}")
+ private void patchProject(@RequestBody Project project, @PathVariable("project_id") UUID id) {
+ projectService.patchProject(project, id);
+ }
+// DELETE remove one resource (ex. DELETE /api/v1/projects/{project_id})
+ @DeleteMapping("/{project_id}")
+ private void deleteProject(@PathVariable("project_id") UUID id) {
+ projectService.deleteProject(id);
+ }
+
+}
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/TaskController.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/TaskController.java
new file mode 100644
index 0000000..9d33125
--- /dev/null
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/TaskController.java
@@ -0,0 +1,68 @@
+package com.accenture.codingtest.springbootcodingtest.controller;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PatchMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import com.accenture.codingtest.springbootcodingtest.model.Task;
+import com.accenture.codingtest.springbootcodingtest.model.Task;
+import com.accenture.codingtest.springbootcodingtest.service.TaskService;
+
+
+@Controller("/api/v1/tasks")
+public class TaskController {
+
+ @Autowired
+ private TaskService taskService;
+
+ public TaskController(TaskService taskService) {
+ super();
+ this.taskService = taskService;
+ }
+// GET retrieve all resources (ex. GET /api/v1/tasks)
+ @GetMapping
+ public List retrieveAllTasks() {
+ return taskService.findAll();
+ }
+
+
+// GET retrieve one resource by id (ex. GET /api/v1/tasks/{task_id})
+ @GetMapping("/{task_id}")
+ public Optional getTaskById(@PathVariable("task_id") UUID id) {
+ return taskService.findById(id);
+ }
+// POST create one resource (ex. POST /api/v1/tasks)
+
+ @PostMapping
+ private void createTask(@RequestBody Task task) {
+ taskService.createTask(task);
+ }
+// PUT update one resource idempotent (ex. PUT /api/v1/tasks/{task_id})
+ @PutMapping("/{task_id}")
+ private void updateTask(@RequestBody Task task, @PathVariable("task_id") UUID id) {
+ taskService.updateTask(task, id);
+ }
+
+
+// PATCH update one resource (ex. PATCH /api/v1/tasks/{task_id})
+ @PatchMapping("/{task_id}")
+ private void patchTask(@RequestBody Task task, @PathVariable("task_id") UUID id) {
+ taskService.patchTask(task, id);
+ }
+// DELETE remove one resource (ex. DELETE /api/v1/tasks/{task_id})
+ @DeleteMapping("/{task_id}")
+ private void deleteTask(@PathVariable("task_id") UUID id) {
+ taskService.deleteTask(id);
+ }
+
+}
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/UserController.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/UserController.java
new file mode 100644
index 0000000..76634bb
--- /dev/null
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/UserController.java
@@ -0,0 +1,68 @@
+package com.accenture.codingtest.springbootcodingtest.controller;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PatchMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import com.accenture.codingtest.springbootcodingtest.model.User;
+import com.accenture.codingtest.springbootcodingtest.service.UserService;
+
+
+@Controller("/api/v1/users")
+public class UserController {
+
+ @Autowired
+ private UserService userService;
+
+ public UserController(UserService userService) {
+ super();
+ this.userService = userService;
+ }
+
+// GET retrieve all resources (ex. GET /api/v1/users)
+ @GetMapping
+ public List retrieveAllUsers() {
+ return userService.findAll();
+ }
+
+
+// GET retrieve one resource by id (ex. GET /api/v1/users/{user_id})
+ @GetMapping("/{user_id}")
+ public Optional getUserById(@PathVariable("user_id") UUID id) {
+ return userService.findById(id);
+ }
+// POST create one resource (ex. POST /api/v1/users)
+
+ @PostMapping
+ private void createUser(@RequestBody User user) {
+ userService.createUser(user);
+ }
+// PUT update one resource idempotent (ex. PUT /api/v1/users/{user_id})
+ @PutMapping("/{user_id}")
+ private void updateUser(@RequestBody User user, @PathVariable("user_id") UUID id) {
+ userService.updateUser(user, id);
+ }
+
+
+// PATCH update one resource (ex. PATCH /api/v1/users/{user_id})
+ @PatchMapping("/{user_id}")
+ private void patchUser(@RequestBody User user, @PathVariable("user_id") UUID id) {
+ userService.patchUser(user, id);
+ }
+// DELETE remove one resource (ex. DELETE /api/v1/users/{user_id})
+ @DeleteMapping("/{user_id}")
+ private void deleteUser(@PathVariable("user_id") UUID id) {
+ userService.deleteUser(id);
+ }
+
+}
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/package-info.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/package-info.java
index e69de29..351b994 100644
--- a/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/package-info.java
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/controller/package-info.java
@@ -0,0 +1 @@
+package com.accenture.codingtest.springbootcodingtest.controller;
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/model/Project.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/model/Project.java
new file mode 100644
index 0000000..a5b6839
--- /dev/null
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/model/Project.java
@@ -0,0 +1,38 @@
+package com.accenture.codingtest.springbootcodingtest.model;
+
+import java.util.UUID;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+import org.hibernate.annotations.GenericGenerator;
+
+@Entity
+public class Project {
+
+ @Id
+ @GeneratedValue(generator = "UUID")
+ @GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
+ private UUID id;
+
+ @Column(unique = true, nullable = false)
+ private String name;
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/model/Task.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/model/Task.java
new file mode 100644
index 0000000..6a1f1fa
--- /dev/null
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/model/Task.java
@@ -0,0 +1,85 @@
+package com.accenture.codingtest.springbootcodingtest.model;
+
+import java.util.UUID;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+
+import org.hibernate.annotations.GenericGenerator;
+
+@Entity
+public class Task {
+
+ @Id
+ @GeneratedValue(generator = "UUID")
+ @GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
+ private UUID id;
+
+ @Column(nullable = false)
+ private String title;
+
+ @Column
+ private String description;
+
+ @Column(nullable = false)
+ private String status;
+
+ @JoinColumn(name="id", nullable=false)
+ private Project project_id;
+
+ @JoinColumn(name="id", nullable=false)
+ private User user_id;
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public Project getProject_id() {
+ return project_id;
+ }
+
+ public void setProject_id(Project project_id) {
+ this.project_id = project_id;
+ }
+
+ public User getUser_id() {
+ return user_id;
+ }
+
+ public void setUser_id(User user_id) {
+ this.user_id = user_id;
+ }
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+
+}
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/model/User.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/model/User.java
new file mode 100644
index 0000000..5611266
--- /dev/null
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/model/User.java
@@ -0,0 +1,49 @@
+package com.accenture.codingtest.springbootcodingtest.model;
+
+import java.util.UUID;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+import org.hibernate.annotations.GenericGenerator;
+
+@Entity
+public class User {
+ @Id
+ @GeneratedValue(generator = "UUID")
+ @GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
+ private UUID id;
+
+ @Column(unique = true, nullable = false)
+ private String username;
+
+ @Column(nullable = false)
+ private String password;
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+}
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/ProjectRepository.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/ProjectRepository.java
new file mode 100644
index 0000000..91fde30
--- /dev/null
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/ProjectRepository.java
@@ -0,0 +1,13 @@
+package com.accenture.codingtest.springbootcodingtest.repository;
+
+import java.util.UUID;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import com.accenture.codingtest.springbootcodingtest.model.Project;
+@Repository
+public interface ProjectRepository
+ extends JpaRepository {
+
+}
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/TaskRepository.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/TaskRepository.java
new file mode 100644
index 0000000..b69300a
--- /dev/null
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/TaskRepository.java
@@ -0,0 +1,13 @@
+package com.accenture.codingtest.springbootcodingtest.repository;
+
+import java.util.UUID;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import com.accenture.codingtest.springbootcodingtest.model.Task;
+@Repository
+public interface TaskRepository
+ extends JpaRepository {
+
+}
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/UserRepository.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/UserRepository.java
new file mode 100644
index 0000000..ac9ca04
--- /dev/null
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/repository/UserRepository.java
@@ -0,0 +1,13 @@
+package com.accenture.codingtest.springbootcodingtest.repository;
+
+import java.util.UUID;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import com.accenture.codingtest.springbootcodingtest.model.User;
+@Repository
+public interface UserRepository
+ extends JpaRepository {
+
+}
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/service/ProjectService.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/ProjectService.java
new file mode 100644
index 0000000..a3a6ef3
--- /dev/null
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/ProjectService.java
@@ -0,0 +1,23 @@
+package com.accenture.codingtest.springbootcodingtest.service;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+import com.accenture.codingtest.springbootcodingtest.model.Project;
+
+public interface ProjectService {
+
+ Optional findById(UUID id);
+
+ List findAll();
+
+ void createProject(Project project);
+
+ void updateProject(Project project, UUID id);
+
+ void patchProject(Project project, UUID id);
+
+ void deleteProject(UUID id);
+
+}
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/service/ProjectServiceImpl.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/ProjectServiceImpl.java
new file mode 100644
index 0000000..72b016a
--- /dev/null
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/ProjectServiceImpl.java
@@ -0,0 +1,68 @@
+package com.accenture.codingtest.springbootcodingtest.service;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.accenture.codingtest.springbootcodingtest.model.Project;
+import com.accenture.codingtest.springbootcodingtest.repository.ProjectRepository;
+@Service
+public class ProjectServiceImpl implements ProjectService {
+ @Autowired
+ private ProjectRepository projectRepository;
+
+ public ProjectServiceImpl(ProjectRepository projectRepository) {
+ this.projectRepository = projectRepository;
+ }
+
+ @Override
+ public List findAll() {
+
+ return projectRepository.findAll();
+ }
+
+ @Override
+ public Optional findById(UUID id) {
+
+ return projectRepository.findById(id);
+ }
+
+ @Override
+ public void createProject(Project project) {
+
+ projectRepository.save(project);
+
+ }
+
+ @Override
+ public void deleteProject(UUID id) {
+
+ Optional usOptional = projectRepository.findById(id);
+ projectRepository.delete(usOptional.get());
+
+ }
+
+ @Override
+ public void patchProject(Project project, UUID id) {
+
+ Optional usOptional = projectRepository.findById(id);
+ Project project2 = usOptional.get();
+ project2.setName(project.getName());
+ projectRepository.save(project2);
+
+ }
+
+ @Override
+ public void updateProject(Project project, UUID id) {
+
+ Optional usOptional = projectRepository.findById(id);
+ Project project2 = usOptional.get();
+ project2.setName(project.getName());
+ projectRepository.save(project2);
+
+ }
+
+}
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/service/TaskService.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/TaskService.java
new file mode 100644
index 0000000..eda663f
--- /dev/null
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/TaskService.java
@@ -0,0 +1,21 @@
+package com.accenture.codingtest.springbootcodingtest.service;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+import com.accenture.codingtest.springbootcodingtest.model.Task;
+
+public interface TaskService {
+
+ List findAll();
+
+ Optional findById(UUID id);
+
+ void createTask(Task task);
+
+ void updateTask(Task task, UUID id);
+
+ void patchTask(Task task, UUID id);
+
+ void deleteTask(UUID id);}
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/service/TaskServiceImpl.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/TaskServiceImpl.java
new file mode 100644
index 0000000..2439926
--- /dev/null
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/TaskServiceImpl.java
@@ -0,0 +1,89 @@
+package com.accenture.codingtest.springbootcodingtest.service;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+import org.springframework.stereotype.Service;
+
+import com.accenture.codingtest.springbootcodingtest.model.Project;
+import com.accenture.codingtest.springbootcodingtest.model.Task;
+import com.accenture.codingtest.springbootcodingtest.model.User;
+import com.accenture.codingtest.springbootcodingtest.repository.ProjectRepository;
+import com.accenture.codingtest.springbootcodingtest.repository.TaskRepository;
+import com.accenture.codingtest.springbootcodingtest.repository.UserRepository;
+@Service
+public class TaskServiceImpl implements TaskService {
+
+ private TaskRepository taskRepository;
+ private UserRepository userRepository;
+ private ProjectRepository projectRepository;
+
+ public TaskServiceImpl(TaskRepository taskRepository, UserRepository userRepository,
+ ProjectRepository projectRepository) {
+ super();
+ this.taskRepository = taskRepository;
+ this.userRepository = userRepository;
+ this.projectRepository = projectRepository;
+ }
+
+ @Override
+ public List findAll() {
+
+ return taskRepository.findAll();
+ }
+
+ @Override
+ public Optional findById(UUID id) {
+
+ return taskRepository.findById(id);
+ }
+
+ @Override
+ public void createTask(Task task) {
+
+ taskRepository.save(task);
+
+ }
+
+ @Override
+ public void deleteTask(UUID id) {
+
+ Optional usOptional = taskRepository.findById(id);
+ taskRepository.delete(usOptional.get());
+
+ }
+
+ @Override
+ public void patchTask(Task task, UUID id) {
+
+ Optional usOptional = taskRepository.findById(id);
+ Task task2 = usOptional.get();
+ task2.setDescription(task.getDescription());
+ task2.setStatus(task2.getStatus());
+ task2.setTitle(task2.getTitle());
+ Optional pOptional = projectRepository.findById(task.getProject_id().getId());
+ task2.setProject_id(pOptional.get());
+ Optional uOptional = userRepository.findById(task.getUser_id().getId());
+ task2.setUser_id(uOptional.get());
+ taskRepository.save(task2);
+
+ }
+
+ @Override
+ public void updateTask(Task task, UUID id) {
+
+ Optional usOptional = taskRepository.findById(id);
+ Task task2 = usOptional.get();
+ task2.setDescription(task.getDescription());
+ task2.setStatus(task2.getStatus());
+ task2.setTitle(task2.getTitle());
+ Optional pOptional = projectRepository.findById(task.getProject_id().getId());
+ task2.setProject_id(pOptional.get());
+ Optional uOptional = userRepository.findById(task.getUser_id().getId());
+ task2.setUser_id(uOptional.get());
+ taskRepository.save(task2);
+
+ }
+
+}
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/service/UserService.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/UserService.java
new file mode 100644
index 0000000..f4a3ac6
--- /dev/null
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/UserService.java
@@ -0,0 +1,23 @@
+package com.accenture.codingtest.springbootcodingtest.service;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+import com.accenture.codingtest.springbootcodingtest.model.User;
+
+public interface UserService {
+
+ List findAll();
+
+ void createUser(User user);
+
+ void deleteUser(UUID id);
+
+ void patchUser(User user, UUID id);
+
+ void updateUser(User user, UUID id);
+
+ Optional findById(UUID id);
+
+}
diff --git a/src/main/java/com/accenture/codingtest/springbootcodingtest/service/UserServiceImpl.java b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/UserServiceImpl.java
new file mode 100644
index 0000000..9cd63ca
--- /dev/null
+++ b/src/main/java/com/accenture/codingtest/springbootcodingtest/service/UserServiceImpl.java
@@ -0,0 +1,70 @@
+package com.accenture.codingtest.springbootcodingtest.service;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+import org.springframework.stereotype.Service;
+
+import com.accenture.codingtest.springbootcodingtest.model.User;
+import com.accenture.codingtest.springbootcodingtest.repository.UserRepository;
+@Service
+public class UserServiceImpl implements UserService {
+
+ private UserRepository userRepository;
+
+ public UserServiceImpl(UserRepository userRepository) {
+ super();
+ this.userRepository = userRepository;
+ }
+
+ @Override
+ public List findAll() {
+
+ return userRepository.findAll();
+ }
+
+ @Override
+ public Optional findById(UUID id) {
+
+ return userRepository.findById(id);
+ }
+
+ @Override
+ public void createUser(User user) {
+
+ userRepository.save(user);
+
+ }
+
+ @Override
+ public void deleteUser(UUID id) {
+
+ Optional usOptional = userRepository.findById(id);
+ userRepository.delete(usOptional.get());
+
+ }
+
+ @Override
+ public void patchUser(User user, UUID id) {
+
+ Optional usOptional = userRepository.findById(id);
+ User user2 = usOptional.get();
+ user2.setPassword(user.getPassword());
+ user2.setUsername(user.getUsername());
+ userRepository.save(user2);
+
+ }
+
+ @Override
+ public void updateUser(User user, UUID id) {
+
+ Optional usOptional = userRepository.findById(id);
+ User user2 = usOptional.get();
+ user2.setPassword(user.getPassword());
+ user2.setUsername(user.getUsername());
+ userRepository.save(user2);
+
+ }
+
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 8b13789..bb9d895 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1 +1,9 @@
+spring.datasource.url= jdbc:mysql://localhost:3306/acndb?useSSL=false
+spring.datasource.username= root1
+spring.datasource.password= 123456
+
+spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL5InnoDBDialect
+
+# Hibernate ddl auto (create, create-drop, validate, update)
+spring.jpa.hibernate.ddl-auto= update
\ No newline at end of file