diff --git a/pom.xml b/pom.xml
index a41a611..4961a2c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,10 +38,12 @@
spring-boot-starter-test
test
+
org.springframework.boot
spring-boot-starter-security
+
org.projectlombok
lombok
diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/ExpenseController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/ExpenseController.java
index 9769c9a..aed21b6 100644
--- a/src/main/java/com/faf223/expensetrackerfaf/controller/ExpenseController.java
+++ b/src/main/java/com/faf223/expensetrackerfaf/controller/ExpenseController.java
@@ -4,10 +4,8 @@ import com.faf223.expensetrackerfaf.model.Expense;
import com.faf223.expensetrackerfaf.service.ExpenseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -15,17 +13,47 @@ import java.util.List;
@RequestMapping("/expenses")
public class ExpenseController {
- @Autowired
- private ExpenseService expenseService;
+ private final ExpenseService expenseService;
- @GetMapping("/user/{userUuid}")
- public ResponseEntity> getExpensesByUser(@PathVariable String userUuid) {
- List expenses = expenseService.getExpensesByUserId(userUuid);
- if (!expenses.isEmpty()) {
- return ResponseEntity.ok(expenses);
+ @Autowired
+ public ExpenseController(ExpenseService expenseService) {
+ this.expenseService = expenseService;
+ }
+
+ @GetMapping()
+ public ResponseEntity> getAllExpenses() {
+ List expenses = expenseService.getExpenses();
+ if (!expenses.isEmpty()) return ResponseEntity.ok(expenses);
+ else return ResponseEntity.notFound().build();
+ }
+
+ @PostMapping()
+ public ResponseEntity createNewExpense(@RequestBody Expense expense,
+ BindingResult bindingResult) {
+ if (!bindingResult.hasErrors()) {
+ expenseService.createOrUpdateExpense(expense);
+ return ResponseEntity.ok(expense);
} else {
return ResponseEntity.notFound().build();
}
}
+
+ @PatchMapping()
+ public ResponseEntity updateExpense(@RequestBody Expense expense,
+ BindingResult bindingResult) {
+ if (!bindingResult.hasErrors()) {
+ expenseService.createOrUpdateExpense(expense);
+ return ResponseEntity.ok(expense);
+ } else {
+ return ResponseEntity.notFound().build();
+ }
+ }
+
+ @GetMapping("/{userUuid}")
+ public ResponseEntity> getExpensesByUser(@PathVariable String userUuid) {
+ List expenses = expenseService.getExpensesByUserId(userUuid);
+ if (!expenses.isEmpty()) return ResponseEntity.ok(expenses);
+ else return ResponseEntity.notFound().build();
+ }
}
diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/IncomeController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/IncomeController.java
index 078c65a..ffc0497 100644
--- a/src/main/java/com/faf223/expensetrackerfaf/controller/IncomeController.java
+++ b/src/main/java/com/faf223/expensetrackerfaf/controller/IncomeController.java
@@ -4,27 +4,57 @@ import com.faf223.expensetrackerfaf.model.Income;
import com.faf223.expensetrackerfaf.service.IncomeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/incomes")
public class IncomeController {
- @Autowired
- private IncomeService incomeService;
- @GetMapping("/user/{userUuid}")
- public ResponseEntity> getIncomesByUser(@PathVariable String userUuid) {
- List incomes = incomeService.getIncomesByUserId(userUuid);
- if (!incomes.isEmpty()) {
- return ResponseEntity.ok(incomes);
+ private final IncomeService incomeService;
+
+ @Autowired
+ public IncomeController(IncomeService incomeService) {
+ this.incomeService = incomeService;
+ }
+
+ @GetMapping()
+ public ResponseEntity> getAllIncomes() {
+ List incomes = incomeService.getIncomes();
+ if (!incomes.isEmpty()) return ResponseEntity.ok(incomes);
+ else return ResponseEntity.notFound().build();
+ }
+
+ @PostMapping()
+ public ResponseEntity createNewIncome(@RequestBody Income income,
+ BindingResult bindingResult) {
+ if (!bindingResult.hasErrors()) {
+ incomeService.createOrUpdateIncome(income);
+ return ResponseEntity.ok(income);
} else {
return ResponseEntity.notFound().build();
}
}
+
+ @PatchMapping()
+ public ResponseEntity updateIncome(@RequestBody Income income,
+ BindingResult bindingResult) {
+ if (!bindingResult.hasErrors()) {
+ System.out.println("amount: " + income.getAmount());
+ incomeService.createOrUpdateIncome(income);
+ return ResponseEntity.ok(income);
+ } else {
+ return ResponseEntity.notFound().build();
+ }
+ }
+
+ @GetMapping("/{userUuid}")
+ public ResponseEntity> getIncomesByUser(@PathVariable String userUuid) {
+ List incomes = incomeService.getIncomesByUserId(userUuid);
+ if (!incomes.isEmpty()) return ResponseEntity.ok(incomes);
+ else return ResponseEntity.notFound().build();
+ }
}
diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/MainController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/MainController.java
deleted file mode 100644
index 47ba33b..0000000
--- a/src/main/java/com/faf223/expensetrackerfaf/controller/MainController.java
+++ /dev/null
@@ -1,66 +0,0 @@
-//package com.faf223.expensetrackerfaf.controller;
-//
-//import com.faf223.expensetrackerfaf.model.Expense;
-//import com.faf223.expensetrackerfaf.model.Income;
-//import com.faf223.expensetrackerfaf.model.Role;
-//import com.faf223.expensetrackerfaf.model.User;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.util.List;
-//
-//@RestController
-//public class MainController {
-//
-// @GetMapping("/")
-// public String helloWorld() {
-// return "Hello, World!";
-// }
-//
-// @GetMapping("/users/get/{id}")
-// public User getUser(@PathVariable int id) {
-// return new User(id, "Test", null, null, null, null, null, null);
-// }
-//
-// @PostMapping("/users/set/{id}/name")
-// public String setName(@PathVariable int id,
-// @RequestParam("name") String name) {
-// throw new UnsupportedOperationException("Waiting for the DB.");
-// }
-//
-// @PostMapping("/users/set/{id}/email")
-// public String setEmail(@PathVariable int id,
-// @RequestParam("email") String email) {
-// throw new UnsupportedOperationException("Waiting for the DB.");
-// }
-//
-// @PostMapping("/users/set/{id}/login")
-// public String setLogin(@PathVariable int id,
-// @RequestParam("login") String login) {
-// throw new UnsupportedOperationException("Waiting for the DB.");
-// }
-//
-// @PostMapping("/users/set/{id}/password")
-// public String setPassword(@PathVariable int id,
-// @RequestParam("password") String password) {
-// throw new UnsupportedOperationException("Waiting for the DB.");
-// }
-//
-// @PostMapping("/users/set/{id}/role")
-// public String setRole(@PathVariable int id,
-// @RequestParam("role") Role role) {
-// throw new UnsupportedOperationException("Waiting for the DB.");
-// }
-//
-// @PostMapping("/users/set/{id}/expenses")
-// public String setExpenses(@PathVariable int id,
-// @RequestParam("expenses") List expenses) {
-// throw new UnsupportedOperationException("Waiting for the DB.");
-// }
-//
-// @PostMapping("/users/set/{id}/incomes")
-// public String setIncomes(@PathVariable int id,
-// @RequestParam("incomes")List incomes) {
-// throw new UnsupportedOperationException("Waiting for the DB.");
-// }
-//
-//}
diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java
index a9de44e..afe8623 100644
--- a/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java
+++ b/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java
@@ -4,26 +4,56 @@ import com.faf223.expensetrackerfaf.model.User;
import com.faf223.expensetrackerfaf.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
- @Autowired
- private UserService userService;
+ private final UserService userService;
- @GetMapping("/{userUuid}")
- public ResponseEntity getUser(@PathVariable String userUuid) {
- User user = userService.getUserById(userUuid);
- if (user != null) {
+ @Autowired
+ public UserController(UserService userService) {
+ this.userService = userService;
+ }
+
+ @GetMapping()
+ public ResponseEntity> getAllUsers() {
+ List users = userService.getUsers();
+ if (!users.isEmpty()) return ResponseEntity.ok(users);
+ else return ResponseEntity.notFound().build();
+ }
+
+ @PostMapping()
+ public ResponseEntity createNewUser(@RequestBody User user,
+ BindingResult bindingResult) {
+ if (!bindingResult.hasErrors()) {
+ userService.createOrUpdateUser(user);
return ResponseEntity.ok(user);
} else {
return ResponseEntity.notFound().build();
}
}
+
+ @PatchMapping()
+ public ResponseEntity updateUser(@RequestBody User user,
+ BindingResult bindingResult) {
+ if (!bindingResult.hasErrors()) {
+ userService.createOrUpdateUser(user);
+ return ResponseEntity.ok(user);
+ } else {
+ return ResponseEntity.notFound().build();
+ }
+ }
+
+ @GetMapping("/{userUuid}")
+ public ResponseEntity getUser(@PathVariable String userUuid) {
+ User user = userService.getUserById(userUuid);
+ if (user != null) return ResponseEntity.ok(user);
+ else return ResponseEntity.notFound().build();
+ }
}
diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java b/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java
index 443ca0d..56ef226 100644
--- a/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java
+++ b/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java
@@ -10,10 +10,22 @@ import java.util.List;
@Service
public class ExpenseService {
+ private final ExpenseRepository expenseRepository;
+
@Autowired
- private ExpenseRepository expenseRepository;
+ public ExpenseService(ExpenseRepository expenseRepository) {
+ this.expenseRepository = expenseRepository;
+ }
+
+ public void createOrUpdateExpense(Expense expense) {
+ expenseRepository.save(expense);
+ }
public List getExpensesByUserId(String userUuid) {
return expenseRepository.findByUserUserUuid(userUuid);
}
+
+ public List getExpenses() {
+ return expenseRepository.findAll();
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java b/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java
index 5ca97d1..65347fb 100644
--- a/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java
+++ b/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java
@@ -9,8 +9,21 @@ import java.util.List;
@Service
public class IncomeService {
+
+ private final IncomeRepository incomeRepository;
+
@Autowired
- private IncomeRepository incomeRepository;
+ public IncomeService(IncomeRepository incomeRepository) {
+ this.incomeRepository = incomeRepository;
+ }
+
+ public void createOrUpdateIncome(Income income) {
+ incomeRepository.save(income);
+ }
+
+ public List getIncomes() {
+ return incomeRepository.findAll();
+ }
public List getIncomesByUserId(String userUuid) {
return incomeRepository.findByUserUserUuid(userUuid);
diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/UserService.java b/src/main/java/com/faf223/expensetrackerfaf/service/UserService.java
index e9c3798..956dfe1 100644
--- a/src/main/java/com/faf223/expensetrackerfaf/service/UserService.java
+++ b/src/main/java/com/faf223/expensetrackerfaf/service/UserService.java
@@ -5,11 +5,25 @@ import com.faf223.expensetrackerfaf.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.List;
+
@Service
public class UserService {
+ private final UserRepository userRepository;
+
@Autowired
- private UserRepository userRepository;
+ public UserService(UserRepository userRepository) {
+ this.userRepository = userRepository;
+ }
+
+ public void createOrUpdateUser(User user) {
+ userRepository.save(user);
+ }
+
+ public List getUsers() {
+ return userRepository.findAll();
+ }
public User getUserById(String userUuid) {
return userRepository.findById(userUuid).orElse(null);
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
deleted file mode 100644
index 11854ec..0000000
--- a/src/main/resources/application.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-# MySQL Connection Configuration
-spring.datasource.url=jdbc:mariadb://194.195.242.137:3306/expensetracker
-spring.datasource.username=root
-spring.datasource.password=daniel$$$javatop
-spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
-
-# Hibernate Configuration
-spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
-server.port=8081