diff --git a/pom.xml b/pom.xml
index fc066ae..77a3efc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,10 +38,10 @@
org.springframework.boot
spring-boot-starter-data-rest
-
- org.springframework.boot
- spring-boot-starter-oauth2-client
-
+
+
+
+
org.springframework.boot
spring-boot-starter-web
@@ -53,12 +53,12 @@
runtime
true
-
- org.springframework.boot
- spring-boot-docker-compose
- runtime
- true
-
+
+
+
+
+
+
org.postgresql
postgresql
@@ -70,9 +70,18 @@
test
- org.springframework.security
- spring-security-test
- test
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+
+
+
+
+ com.squareup.okhttp3
+ okhttp
+ 4.9.3
@@ -82,6 +91,16 @@
org.springframework.boot
spring-boot-maven-plugin
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ -javaagent:${settings.localRepository}/org/mockito/mockito-core/${mockito.version}/mockito-core-${mockito.version}.jar
+ -Xshare:off
+
+
+
diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Controller/ArtisanConnectController.java b/src/main/java/_11/asktpk/artisanconnectbackend/Controller/ArtisanConnectController.java
new file mode 100644
index 0000000..57f4f6d
--- /dev/null
+++ b/src/main/java/_11/asktpk/artisanconnectbackend/Controller/ArtisanConnectController.java
@@ -0,0 +1,28 @@
+package _11.asktpk.artisanconnectbackend.Controller;
+
+import _11.asktpk.artisanconnectbackend.Model.Notice;
+import _11.asktpk.artisanconnectbackend.Repository.NoticeRepository;
+import _11.asktpk.artisanconnectbackend.Service.PostgresDatabase;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RequestMapping("/api/v1")
+@RestController
+public class ArtisanConnectController {
+ @Autowired
+ private PostgresDatabase postgresDatabase;
+
+ @GetMapping("/notices/all")
+ public List getAllNotices() {
+ return postgresDatabase.get();
+ }
+
+ @ResponseStatus(HttpStatus.CREATED)
+ @PostMapping("/notices/add")
+ public void addNotice(@RequestBody Notice notice) {
+ postgresDatabase.add(notice);
+ }
+}
diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Model/Notice.java b/src/main/java/_11/asktpk/artisanconnectbackend/Model/Notice.java
new file mode 100644
index 0000000..3472221
--- /dev/null
+++ b/src/main/java/_11/asktpk/artisanconnectbackend/Model/Notice.java
@@ -0,0 +1,63 @@
+package _11.asktpk.artisanconnectbackend.Model;
+
+import jakarta.persistence.*;
+import java.sql.Blob;
+
+@Entity
+public class Notice {
+ @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ @Column
+ private String title;
+
+ @Column
+ private String username;
+
+ @Column
+ private String description;
+
+ public Notice() {
+ this.title = "";
+ this.username = "";
+ this.description = "";
+ }
+
+ public Notice(String nTitle, String nUsername, String nDescription) {
+ this.title = nTitle;
+ this.username = nUsername;
+ this.description = nDescription;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String user) {
+ this.username = user;
+ }
+
+ 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;
+ }
+}
diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Repository/NoticeRepository.java b/src/main/java/_11/asktpk/artisanconnectbackend/Repository/NoticeRepository.java
new file mode 100644
index 0000000..ed19f4f
--- /dev/null
+++ b/src/main/java/_11/asktpk/artisanconnectbackend/Repository/NoticeRepository.java
@@ -0,0 +1,8 @@
+package _11.asktpk.artisanconnectbackend.Repository;
+
+import _11.asktpk.artisanconnectbackend.Model.Notice;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface NoticeRepository extends JpaRepository {
+}
diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Service/IDatabase.java b/src/main/java/_11/asktpk/artisanconnectbackend/Service/IDatabase.java
new file mode 100644
index 0000000..622d594
--- /dev/null
+++ b/src/main/java/_11/asktpk/artisanconnectbackend/Service/IDatabase.java
@@ -0,0 +1,10 @@
+package _11.asktpk.artisanconnectbackend.Service;
+
+import _11.asktpk.artisanconnectbackend.Model.Notice;
+
+import java.util.List;
+
+public interface IDatabase {
+ void add(Notice newNotice);
+ List get();
+}
diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Service/PostgresDatabase.java b/src/main/java/_11/asktpk/artisanconnectbackend/Service/PostgresDatabase.java
new file mode 100644
index 0000000..d78ce5a
--- /dev/null
+++ b/src/main/java/_11/asktpk/artisanconnectbackend/Service/PostgresDatabase.java
@@ -0,0 +1,24 @@
+package _11.asktpk.artisanconnectbackend.Service;
+
+import _11.asktpk.artisanconnectbackend.Model.Notice;
+import _11.asktpk.artisanconnectbackend.Repository.NoticeRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class PostgresDatabase implements IDatabase{
+ @Autowired
+ private NoticeRepository noticeRepository;
+
+ @Override
+ public void add(Notice newNotice) {
+ noticeRepository.save(newNotice);
+ }
+
+ @Override
+ public List get() {
+ return noticeRepository.findAll();
+ }
+}
diff --git a/src/test/java/_11/asktpk/artisanconnectbackend/ArtisanConnectBackendApplicationTests.java b/src/test/java/_11/asktpk/artisanconnectbackend/ArtisanConnectBackendApplicationTests.java
index e4fa6b5..60bbb73 100644
--- a/src/test/java/_11/asktpk/artisanconnectbackend/ArtisanConnectBackendApplicationTests.java
+++ b/src/test/java/_11/asktpk/artisanconnectbackend/ArtisanConnectBackendApplicationTests.java
@@ -1,13 +1,43 @@
package _11.asktpk.artisanconnectbackend;
+import _11.asktpk.artisanconnectbackend.Model.Notice;
+import _11.asktpk.artisanconnectbackend.Service.PostgresDatabase;
+import okhttp3.*;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
+import java.io.IOException;
+
@SpringBootTest
class ArtisanConnectBackendApplicationTests {
+ private static final Logger logger = LogManager.getLogger(ArtisanConnectBackendApplicationTests.class);
+
+ @Autowired
+ PostgresDatabase postgresDatabase;
@Test
- void contextLoads() {
+ void testPostgresDatabase() {
+ postgresDatabase.add(new Notice("Test Notice", "Username", "Test Description"));
+ Boolean isRecordAvailable = postgresDatabase.get().size() > 0;
+ if(isRecordAvailable) {
+ logger.info("The record is available in the database");
+ } else {
+ logger.error("The record is not available in the database");
+ }
+ assert isRecordAvailable;
}
+ @Test
+ void getAllNotices() throws IOException {
+ OkHttpClient client = new OkHttpClient().newBuilder()
+ .build();
+ MediaType mediaType = MediaType.parse("text/plain");
+ Request request = new Request.Builder()
+ .url("http://localhost:8080/api/v1/notices/all")
+ .build();
+ Response response = client.newCall(request).execute();
+ }
}