From aec991374f68dfe5715411b1af6a41621530297b Mon Sep 17 00:00:00 2001 From: Cedric Date: Sun, 22 Dec 2024 23:53:36 +0100 Subject: [PATCH] db connected --- .../controller/ExpenseListController.java | 38 +++++++++++++++++++ .../app/XpenselyServer/model/AppUser.java | 22 +++++++++++ .../app/XpenselyServer/model/Expense.java | 26 +++++++++++++ .../app/XpenselyServer/model/ExpenseList.java | 34 +++++++++++++++++ .../repo/ExpenseListRepository.java | 11 ++++++ .../services/ExpenseListService.java | 27 +++++++++++++ 6 files changed, 158 insertions(+) create mode 100644 src/main/java/de/zendric/app/XpenselyServer/controller/ExpenseListController.java create mode 100644 src/main/java/de/zendric/app/XpenselyServer/model/AppUser.java create mode 100644 src/main/java/de/zendric/app/XpenselyServer/model/Expense.java create mode 100644 src/main/java/de/zendric/app/XpenselyServer/model/ExpenseList.java create mode 100644 src/main/java/de/zendric/app/XpenselyServer/repo/ExpenseListRepository.java create mode 100644 src/main/java/de/zendric/app/XpenselyServer/services/ExpenseListService.java diff --git a/src/main/java/de/zendric/app/XpenselyServer/controller/ExpenseListController.java b/src/main/java/de/zendric/app/XpenselyServer/controller/ExpenseListController.java new file mode 100644 index 0000000..a41b469 --- /dev/null +++ b/src/main/java/de/zendric/app/XpenselyServer/controller/ExpenseListController.java @@ -0,0 +1,38 @@ +package de.zendric.app.XpenselyServer.controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import de.zendric.app.XpenselyServer.model.ExpenseList; +import de.zendric.app.XpenselyServer.services.ExpenseListService; + +@RestController +@RequestMapping("/api/lists") +public class ExpenseListController { + + @Autowired + private ExpenseListService service; + + @GetMapping + public List getAllLists() { + return service.getAllLists(); + } + + @PostMapping + public ExpenseList createList(@RequestBody ExpenseList list) { + return service.createList(list); + } + + @DeleteMapping("/{id}") + public void deleteList(@PathVariable Long id) { + service.deleteList(id); + } +} diff --git a/src/main/java/de/zendric/app/XpenselyServer/model/AppUser.java b/src/main/java/de/zendric/app/XpenselyServer/model/AppUser.java new file mode 100644 index 0000000..17b3e10 --- /dev/null +++ b/src/main/java/de/zendric/app/XpenselyServer/model/AppUser.java @@ -0,0 +1,22 @@ +package de.zendric.app.XpenselyServer.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Getter +@Setter +public class AppUser { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String username; + private String password; + + +} diff --git a/src/main/java/de/zendric/app/XpenselyServer/model/Expense.java b/src/main/java/de/zendric/app/XpenselyServer/model/Expense.java new file mode 100644 index 0000000..b3618a6 --- /dev/null +++ b/src/main/java/de/zendric/app/XpenselyServer/model/Expense.java @@ -0,0 +1,26 @@ +package de.zendric.app.XpenselyServer.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Entity +public class Expense { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String description; + private Double amount; + + + @ManyToOne + private ExpenseList expenseList; +} diff --git a/src/main/java/de/zendric/app/XpenselyServer/model/ExpenseList.java b/src/main/java/de/zendric/app/XpenselyServer/model/ExpenseList.java new file mode 100644 index 0000000..c7a2a5a --- /dev/null +++ b/src/main/java/de/zendric/app/XpenselyServer/model/ExpenseList.java @@ -0,0 +1,34 @@ +package de.zendric.app.XpenselyServer.model; + +import java.util.List; + +import jakarta.persistence.CascadeType; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Getter +@Setter +public class ExpenseList { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + + @ManyToOne + private AppUser owner; + + @ManyToMany + private List sharedWith; + + @OneToMany(mappedBy = "expenseList", cascade = CascadeType.ALL) + private List expenses; +} diff --git a/src/main/java/de/zendric/app/XpenselyServer/repo/ExpenseListRepository.java b/src/main/java/de/zendric/app/XpenselyServer/repo/ExpenseListRepository.java new file mode 100644 index 0000000..ad2301b --- /dev/null +++ b/src/main/java/de/zendric/app/XpenselyServer/repo/ExpenseListRepository.java @@ -0,0 +1,11 @@ +package de.zendric.app.XpenselyServer.repo; + +import org.springframework.data.jpa.repository.JpaRepository; + +import de.zendric.app.XpenselyServer.model.ExpenseList; + +import java.util.List; + +public interface ExpenseListRepository extends JpaRepository { + List findByOwnerId(Long ownerId); +} \ No newline at end of file diff --git a/src/main/java/de/zendric/app/XpenselyServer/services/ExpenseListService.java b/src/main/java/de/zendric/app/XpenselyServer/services/ExpenseListService.java new file mode 100644 index 0000000..d08c3a1 --- /dev/null +++ b/src/main/java/de/zendric/app/XpenselyServer/services/ExpenseListService.java @@ -0,0 +1,27 @@ +package de.zendric.app.XpenselyServer.services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import de.zendric.app.XpenselyServer.model.ExpenseList; +import de.zendric.app.XpenselyServer.repo.ExpenseListRepository; + +@Service +public class ExpenseListService { + @Autowired + private ExpenseListRepository repository; + + public List getAllLists() { + return repository.findAll(); + } + + public ExpenseList createList(ExpenseList list) { + return repository.save(list); + } + + public void deleteList(Long id) { + repository.deleteById(id); + } +} \ No newline at end of file