diff --git a/pom.xml b/pom.xml
index f38313e..a41a611 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
org.springframework.boot
spring-boot-starter-parent
3.1.3
-
+
com.faf223
ExpenseTrackerFAF
@@ -20,37 +20,31 @@
org.springframework.boot
spring-boot-starter-web
+ 3.1.4
org.springframework.boot
spring-boot-starter-data-jpa
+
- com.microsoft.sqlserver
- mssql-jdbc
+ org.mariadb.jdbc
+ mariadb-java-client
+ 3.2.0
org.springframework.boot
spring-boot-starter-test
test
- 3.1.2
org.springframework.boot
spring-boot-starter-security
-
- org.springframework.boot
- spring-boot-starter-data-jpa
- 3.1.3
-
-
-
- com.microsoft.sqlserver
- mssql-jdbc
- 12.4.1.jre11
+ org.projectlombok
+ lombok
@@ -61,5 +55,4 @@
-
diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/BasicController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/BasicController.java
deleted file mode 100644
index fbb3f0c..0000000
--- a/src/main/java/com/faf223/expensetrackerfaf/controller/BasicController.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.faf223.expensetrackerfaf.controller;
-
-import com.faf223.expensetrackerfaf.model.BasicEntity;
-import com.faf223.expensetrackerfaf.repository.BasicRepository;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/api/getData")
-public class BasicController {
- private final BasicRepository basicRepository;
-
- @Autowired
- public BasicController(BasicRepository basicRepository) {
- this.basicRepository = basicRepository;
- }
-
- @GetMapping()
- public List listDepartments() {
- return basicRepository.findAll();
- }
-}
diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/ExpenseController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/ExpenseController.java
new file mode 100644
index 0000000..9769c9a
--- /dev/null
+++ b/src/main/java/com/faf223/expensetrackerfaf/controller/ExpenseController.java
@@ -0,0 +1,31 @@
+package com.faf223.expensetrackerfaf.controller;
+
+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 java.util.List;
+
+@RestController
+@RequestMapping("/expenses")
+public class ExpenseController {
+
+ @Autowired
+ private ExpenseService expenseService;
+
+ @GetMapping("/user/{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
new file mode 100644
index 0000000..078c65a
--- /dev/null
+++ b/src/main/java/com/faf223/expensetrackerfaf/controller/IncomeController.java
@@ -0,0 +1,30 @@
+package com.faf223.expensetrackerfaf.controller;
+
+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 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);
+ } 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
index 6e8d9bf..0ce20b5 100644
--- a/src/main/java/com/faf223/expensetrackerfaf/controller/MainController.java
+++ b/src/main/java/com/faf223/expensetrackerfaf/controller/MainController.java
@@ -1,66 +1,66 @@
-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.");
- }
-
-}
\ No newline at end of file
+//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.");
+// }
+//
+//}
\ No newline at end of file
diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java
new file mode 100644
index 0000000..a9de44e
--- /dev/null
+++ b/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java
@@ -0,0 +1,29 @@
+package com.faf223.expensetrackerfaf.controller;
+
+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;
+
+@RestController
+@RequestMapping("/users")
+public class UserController {
+
+ @Autowired
+ private UserService userService;
+
+ @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/custom/UppercaseStrategy.java b/src/main/java/com/faf223/expensetrackerfaf/custom/UppercaseStrategy.java
deleted file mode 100644
index 9c3cc83..0000000
--- a/src/main/java/com/faf223/expensetrackerfaf/custom/UppercaseStrategy.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.faf223.expensetrackerfaf.custom;
-
-import org.hibernate.boot.model.naming.Identifier;
-import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
-import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
-
-public class UppercaseStrategy implements PhysicalNamingStrategy {
-
- @Override
- public Identifier toPhysicalCatalogName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
- return identifier; // No modification for catalog name
- }
-
- @Override
- public Identifier toPhysicalSchemaName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
- return identifier; // No modification for schema name
- }
-
- @Override
- public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) {
- String tableName = name.getText();
- return new Identifier(tableName, name.isQuoted());
- }
-
- @Override
- public Identifier toPhysicalSequenceName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
- return identifier; // No modification for sequence name
- }
-
- @Override
- public Identifier toPhysicalColumnName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
- return identifier; // No modification for column name
- }
-
- @Override
- public Identifier toPhysicalTypeName(Identifier logicalName, JdbcEnvironment jdbcEnvironment) {
- return PhysicalNamingStrategy.super.toPhysicalTypeName(logicalName, jdbcEnvironment);
- }
-}
diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/BasicEntity.java b/src/main/java/com/faf223/expensetrackerfaf/model/BasicEntity.java
deleted file mode 100644
index 06f0644..0000000
--- a/src/main/java/com/faf223/expensetrackerfaf/model/BasicEntity.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.faf223.expensetrackerfaf.model;
-
-import jakarta.persistence.*;
-import java.util.Date;
-
-@Entity
-@Table(name = "Department", schema = "HumanResources")
-public class BasicEntity {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "DepartmentID")
- private Short departmentId;
-
- @Column(name = "GroupName", nullable = false, length = 50)
- private String groupName;
-
- @Column(name = "ModifiedDate", nullable = false)
- @Temporal(TemporalType.TIMESTAMP)
- private Date modifiedDate;
-
- @Column(name = "Name", nullable = false, length = 50)
- private String name;
-
- public Short getDepartmentId() {
- return departmentId;
- }
- public String getGroupName() {
- return groupName;
- }
- public Date getModifiedDate() {
- return modifiedDate;
- }
-
- public String getName() {
- return name;
- }
-}
diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/Categories.java b/src/main/java/com/faf223/expensetrackerfaf/model/Categories.java
deleted file mode 100644
index a309f85..0000000
--- a/src/main/java/com/faf223/expensetrackerfaf/model/Categories.java
+++ /dev/null
@@ -1,34 +0,0 @@
-
-package com.faf223.expensetrackerfaf.model;
-
-public class Categories {
-
- public enum ExpenseCategory {
- CREDIT, BUY, BUSINESS, ENTERTAINMENT, RESTAURANTS_AND_CAFE, COMMUNAL_PAYMENTS, SUPERMARKET, MISC;
-
- public String getEffectiveName() {
- return Categories.getEffectiveName(this.name());
- }
- }
-
- public enum IncomeCategory {
- P2P, SALARY, GIFT, CREDIT, MISC;
-
- public String getEffectiveName() {
- return Categories.getEffectiveName(this.name());
- }
- }
-
- private static String getEffectiveName(String name) {
- String[] arr = name.split("_");
- StringBuilder result = new StringBuilder();
- for(String entry : arr) {
- String[] entryArr = entry.split("");
- StringBuilder builder = new StringBuilder(entryArr[0]);
- for(int i = 1; i < entry.length(); i++) builder.append(entryArr[i].toLowerCase());
- result.append(builder).append(" ");
- }
- return result.toString();
- }
-
-}
diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/Credential.java b/src/main/java/com/faf223/expensetrackerfaf/model/Credential.java
new file mode 100644
index 0000000..aa2b4bd
--- /dev/null
+++ b/src/main/java/com/faf223/expensetrackerfaf/model/Credential.java
@@ -0,0 +1,20 @@
+package com.faf223.expensetrackerfaf.model;
+
+import jakarta.persistence.*;
+import lombok.Data;
+
+@Data
+@Entity(name = "credentials")
+public class Credential {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long credentialId;
+
+ @ManyToOne
+ @JoinColumn(name = "user_uuid")
+ private User user;
+
+ private String email;
+ private String password;
+}
+
diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java b/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java
index 5c43723..67df9cf 100644
--- a/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java
+++ b/src/main/java/com/faf223/expensetrackerfaf/model/Expense.java
@@ -1,63 +1,26 @@
-
package com.faf223.expensetrackerfaf.model;
-import com.faf223.expensetrackerfaf.util.IMoneyTransaction;
import jakarta.persistence.*;
+import lombok.Data;
-@Entity
-@Table(name = "expense")
-public class Expense implements IMoneyTransaction {
+import java.math.BigDecimal;
+import java.time.LocalDate;
+@Data
+@Entity(name = "expenses")
+public class Expense {
@Id
- @Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
- private long id;
+ private Long expenseId;
@ManyToOne
- @JoinColumn(name = "user_id", referencedColumnName = "id")
+ @JoinColumn(name = "user_uuid")
private User user;
- private int amount;
- private Categories.ExpenseCategory category;
- public Expense(User user, int amount, Categories.ExpenseCategory category) {
- this.user = user;
- this.amount = amount;
- this.category = category;
- }
+ @ManyToOne
+ @JoinColumn(name = "category_id")
+ private ExpenseCategory category;
- public Expense() {}
-
- public long getId() {
- return id;
- }
-
- public void setId(long id) {
- this.id = id;
- }
-
- @Override
- public User getUser() {
- return user;
- }
-
- public void setUser(User user) {
- this.user = user;
- }
-
- @Override
- public int getAmount() {
- return amount;
- }
-
- public void setAmount(int amount) {
- this.amount = amount;
- }
-
- @Override
- public String getCategory() {
- return category.getEffectiveName();
- }
-
- public void setCategory(Categories.ExpenseCategory category) {
- this.category = category;
- }
+ private LocalDate date;
+ private BigDecimal amount;
}
+
diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/ExpenseCategory.java b/src/main/java/com/faf223/expensetrackerfaf/model/ExpenseCategory.java
new file mode 100644
index 0000000..7662ce6
--- /dev/null
+++ b/src/main/java/com/faf223/expensetrackerfaf/model/ExpenseCategory.java
@@ -0,0 +1,17 @@
+package com.faf223.expensetrackerfaf.model;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import lombok.Data;
+
+@Data
+@Entity(name = "expense_categories")
+public class ExpenseCategory {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long categoryId;
+
+ private String categoryName;
+}
diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/Income.java b/src/main/java/com/faf223/expensetrackerfaf/model/Income.java
index 55fbaef..38344a7 100644
--- a/src/main/java/com/faf223/expensetrackerfaf/model/Income.java
+++ b/src/main/java/com/faf223/expensetrackerfaf/model/Income.java
@@ -1,67 +1,26 @@
package com.faf223.expensetrackerfaf.model;
-import com.faf223.expensetrackerfaf.util.IMoneyTransaction;
import jakarta.persistence.*;
+import lombok.Data;
-@Entity
-@Table(name = "income")
-public class Income implements IMoneyTransaction {
+import java.math.BigDecimal;
+import java.time.LocalDate;
+@Data
+@Entity(name = "incomes")
+public class Income {
@Id
- @Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
- private long id;
+ private Long incomeId;
@ManyToOne
- @JoinColumn(name = "user_id", referencedColumnName = "id")
+ @JoinColumn(name = "user_uuid")
private User user;
- private int amount;
- private Categories.IncomeCategory category;
- public Income(User user, int amount, Categories.IncomeCategory category) {
- this.user = user;
- this.amount = amount;
- this.category = category;
- }
+ @ManyToOne
+ @JoinColumn(name = "category_id")
+ private IncomeCategory category;
- public Income() {}
-
- public long getId() {
- return id;
- }
-
- public void setId(long id) {
- this.id = id;
- }
-
- public void setUser(User user) {
- this.user = user;
- }
-
- @Override
- public User getUser() {
- return user;
- }
-
- @Override
- public int getAmount() {
- return amount;
- }
-
- @Override
- public String getCategory() {
- return category.getEffectiveName();
- }
-
- public void setUserId(User user) {
- this.user = user;
- }
-
- public void setAmount(int amount) {
- this.amount = amount;
- }
-
- public void setCategory(Categories.IncomeCategory category) {
- this.category = category;
- }
+ private LocalDate date;
+ private BigDecimal amount;
}
diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/IncomeCategory.java b/src/main/java/com/faf223/expensetrackerfaf/model/IncomeCategory.java
new file mode 100644
index 0000000..8bb54f0
--- /dev/null
+++ b/src/main/java/com/faf223/expensetrackerfaf/model/IncomeCategory.java
@@ -0,0 +1,18 @@
+package com.faf223.expensetrackerfaf.model;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import lombok.Data;
+
+@Data
+@Entity(name = "income_categories")
+public class IncomeCategory {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long categoryId;
+
+ private String categoryName;
+}
+
diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/User.java b/src/main/java/com/faf223/expensetrackerfaf/model/User.java
index 65ed712..b5a30a9 100644
--- a/src/main/java/com/faf223/expensetrackerfaf/model/User.java
+++ b/src/main/java/com/faf223/expensetrackerfaf/model/User.java
@@ -1,101 +1,18 @@
-
package com.faf223.expensetrackerfaf.model;
-import jakarta.persistence.*;
-import java.util.List;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import lombok.Data;
-@Entity
-@Table(name = "User")
+@Data
+@Entity(name = "users")
public class User {
@Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private long id;
+ @Column(table = "users", name = "user_uuid")
+ private String userUuid;
+
private String name;
- private String email;
- private String login;
- private String password;
- private Role role;
-
- @OneToMany(mappedBy = "user")
- private List expenses;
-
- @OneToMany(mappedBy = "user")
- private List incomes;
-
- public User(long id, String name, String email, String login, String password, Role role, List expenses, List incomes) {
- this.id = id;
- this.name = name;
- this.email = email;
- this.login = login;
- this.password = password;
- this.role = role;
- this.expenses = expenses;
- this.incomes = incomes;
- }
-
- public User() {}
-
- public long getId() {
- return id;
- }
-
- public void setId(long id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getEmail() {
- return email;
- }
-
- public void setEmail(String email) {
- this.email = email;
- }
-
- public String getLogin() {
- return login;
- }
-
- public void setLogin(String login) {
- this.login = login;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public Role getRole() {
- return role;
- }
-
- public void setRole(Role role) {
- this.role = role;
- }
-
- public List getExpenses() {
- return expenses;
- }
-
- public void setExpenses(List expenses) {
- this.expenses = expenses;
- }
-
- public List getIncomes() {
- return incomes;
- }
-
- public void setIncomes(List incomes) {
- this.incomes = incomes;
- }
+ private String surname;
+ private String username;
}
diff --git a/src/main/java/com/faf223/expensetrackerfaf/repository/BasicRepository.java b/src/main/java/com/faf223/expensetrackerfaf/repository/BasicRepository.java
deleted file mode 100644
index 94f10e3..0000000
--- a/src/main/java/com/faf223/expensetrackerfaf/repository/BasicRepository.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.faf223.expensetrackerfaf.repository;
-
-import com.faf223.expensetrackerfaf.model.BasicEntity;
-
-import java.util.List;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-
-public interface BasicRepository extends JpaRepository {
- // You can define custom query methods here if needed
-}
-
diff --git a/src/main/java/com/faf223/expensetrackerfaf/repository/CredentialRepository.java b/src/main/java/com/faf223/expensetrackerfaf/repository/CredentialRepository.java
new file mode 100644
index 0000000..346136a
--- /dev/null
+++ b/src/main/java/com/faf223/expensetrackerfaf/repository/CredentialRepository.java
@@ -0,0 +1,9 @@
+package com.faf223.expensetrackerfaf.repository;
+
+import com.faf223.expensetrackerfaf.model.Credential;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface CredentialRepository extends JpaRepository {
+}
\ No newline at end of file
diff --git a/src/main/java/com/faf223/expensetrackerfaf/repository/ExpenseCategoryRepository.java b/src/main/java/com/faf223/expensetrackerfaf/repository/ExpenseCategoryRepository.java
new file mode 100644
index 0000000..91deb28
--- /dev/null
+++ b/src/main/java/com/faf223/expensetrackerfaf/repository/ExpenseCategoryRepository.java
@@ -0,0 +1,9 @@
+package com.faf223.expensetrackerfaf.repository;
+
+import com.faf223.expensetrackerfaf.model.ExpenseCategory;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ExpenseCategoryRepository extends JpaRepository {
+}
\ No newline at end of file
diff --git a/src/main/java/com/faf223/expensetrackerfaf/repository/ExpenseRepository.java b/src/main/java/com/faf223/expensetrackerfaf/repository/ExpenseRepository.java
new file mode 100644
index 0000000..4cd39d0
--- /dev/null
+++ b/src/main/java/com/faf223/expensetrackerfaf/repository/ExpenseRepository.java
@@ -0,0 +1,12 @@
+package com.faf223.expensetrackerfaf.repository;
+
+import com.faf223.expensetrackerfaf.model.Expense;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface ExpenseRepository extends JpaRepository {
+ List findByUserUserUuid(String userUuid);
+}
diff --git a/src/main/java/com/faf223/expensetrackerfaf/repository/IncomeCategoryRepository.java b/src/main/java/com/faf223/expensetrackerfaf/repository/IncomeCategoryRepository.java
new file mode 100644
index 0000000..e6c8402
--- /dev/null
+++ b/src/main/java/com/faf223/expensetrackerfaf/repository/IncomeCategoryRepository.java
@@ -0,0 +1,9 @@
+package com.faf223.expensetrackerfaf.repository;
+
+import com.faf223.expensetrackerfaf.model.IncomeCategory;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface IncomeCategoryRepository extends JpaRepository {
+}
\ No newline at end of file
diff --git a/src/main/java/com/faf223/expensetrackerfaf/repository/IncomeRepository.java b/src/main/java/com/faf223/expensetrackerfaf/repository/IncomeRepository.java
new file mode 100644
index 0000000..9a1a592
--- /dev/null
+++ b/src/main/java/com/faf223/expensetrackerfaf/repository/IncomeRepository.java
@@ -0,0 +1,12 @@
+package com.faf223.expensetrackerfaf.repository;
+
+import com.faf223.expensetrackerfaf.model.Income;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface IncomeRepository extends JpaRepository {
+ List findByUserUserUuid(String userUuid);
+}
diff --git a/src/main/java/com/faf223/expensetrackerfaf/repository/UserRepository.java b/src/main/java/com/faf223/expensetrackerfaf/repository/UserRepository.java
new file mode 100644
index 0000000..9e4e015
--- /dev/null
+++ b/src/main/java/com/faf223/expensetrackerfaf/repository/UserRepository.java
@@ -0,0 +1,9 @@
+package com.faf223.expensetrackerfaf.repository;
+
+import com.faf223.expensetrackerfaf.model.User;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface UserRepository extends JpaRepository {
+}
\ No newline at end of file
diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/BasicService.java b/src/main/java/com/faf223/expensetrackerfaf/service/BasicService.java
deleted file mode 100644
index a424dce..0000000
--- a/src/main/java/com/faf223/expensetrackerfaf/service/BasicService.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.faf223.expensetrackerfaf.service;
-
-import com.faf223.expensetrackerfaf.model.BasicEntity;
-
-import java.util.List;
-
-public interface BasicService {
- List getAllData();
-}
diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/BasicServiceImpl.java b/src/main/java/com/faf223/expensetrackerfaf/service/BasicServiceImpl.java
deleted file mode 100644
index 8a83825..0000000
--- a/src/main/java/com/faf223/expensetrackerfaf/service/BasicServiceImpl.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.faf223.expensetrackerfaf.service;
-
-import com.faf223.expensetrackerfaf.model.BasicEntity;
-import com.faf223.expensetrackerfaf.repository.BasicRepository;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service
-public class BasicServiceImpl implements BasicService {
- private final BasicRepository basicRepository;
-
- @Autowired
- public BasicServiceImpl(BasicRepository basicRepository) {
- this.basicRepository = basicRepository;
- }
-
- @Override
- public List getAllData() {
- return basicRepository.findAll();
- }
-}
diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java b/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java
new file mode 100644
index 0000000..443ca0d
--- /dev/null
+++ b/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java
@@ -0,0 +1,19 @@
+package com.faf223.expensetrackerfaf.service;
+
+import com.faf223.expensetrackerfaf.model.Expense;
+import com.faf223.expensetrackerfaf.repository.ExpenseRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class ExpenseService {
+
+ @Autowired
+ private ExpenseRepository expenseRepository;
+
+ public List getExpensesByUserId(String userUuid) {
+ return expenseRepository.findByUserUserUuid(userUuid);
+ }
+}
\ 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
new file mode 100644
index 0000000..5ca97d1
--- /dev/null
+++ b/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java
@@ -0,0 +1,18 @@
+package com.faf223.expensetrackerfaf.service;
+
+import com.faf223.expensetrackerfaf.model.Income;
+import com.faf223.expensetrackerfaf.repository.IncomeRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class IncomeService {
+ @Autowired
+ private IncomeRepository incomeRepository;
+
+ 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
new file mode 100644
index 0000000..e9c3798
--- /dev/null
+++ b/src/main/java/com/faf223/expensetrackerfaf/service/UserService.java
@@ -0,0 +1,17 @@
+package com.faf223.expensetrackerfaf.service;
+
+import com.faf223.expensetrackerfaf.model.User;
+import com.faf223.expensetrackerfaf.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserService {
+
+ @Autowired
+ private UserRepository userRepository;
+
+ public User getUserById(String userUuid) {
+ return userRepository.findById(userUuid).orElse(null);
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 27b9961..11854ec 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,5 +1,9 @@
-spring.datasource.url=jdbc:sqlserver://DANIEL-LAPTOP\\SQLEXPRESS01:1433;databaseName=AdventureWorks2022;encrypt=true;user=Daniel1;password=daniel;trustServerCertificate=true;
-spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
-spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect
-spring.jpa.hibernate.naming.physical-strategy=com.faf223.expensetrackerfaf.custom.UppercaseStrategy
+# 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