From 70aa3558759921f7ec44adffec081ba1e9d7fb6a Mon Sep 17 00:00:00 2001 From: terminaldweller Date: Thu, 17 Mar 2022 19:07:17 +0330 Subject: daily commit.wip --- .../java/com/terminaldweller/doc/DocConfig.java | 20 ++++++++++++ .../com/terminaldweller/doc/DocController.java | 17 ++++++++++ .../com/terminaldweller/doc/DocRepository.java | 13 ++++++++ .../java/com/terminaldweller/doc/DocService.java | 38 +++++++++++++++++++++- src/main/resources/application.properties | 2 ++ 5 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/terminaldweller/doc/DocConfig.java create mode 100644 src/main/java/com/terminaldweller/doc/DocRepository.java (limited to 'src') diff --git a/src/main/java/com/terminaldweller/doc/DocConfig.java b/src/main/java/com/terminaldweller/doc/DocConfig.java new file mode 100644 index 0000000..1826817 --- /dev/null +++ b/src/main/java/com/terminaldweller/doc/DocConfig.java @@ -0,0 +1,20 @@ +package com.terminaldweller.doc; + +import java.util.List; +import org.springframework.boot.CommandLineRunner; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** The config class. */ +@Configuration +public class DocConfig { + @Bean + CommandLineRunner commandLineRunner(DocRepository repository) { + return args -> { + Doc mydoc1 = new Doc("mydoc1", 0L); + Doc mydoc2 = new Doc("mydoc2", 0L); + + repository.saveAll(List.of(mydoc1, mydoc2)); + }; + } +} diff --git a/src/main/java/com/terminaldweller/doc/DocController.java b/src/main/java/com/terminaldweller/doc/DocController.java index 564f37c..a91fb0d 100644 --- a/src/main/java/com/terminaldweller/doc/DocController.java +++ b/src/main/java/com/terminaldweller/doc/DocController.java @@ -2,8 +2,14 @@ package com.terminaldweller.doc; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +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.ResponseStatus; import org.springframework.web.bind.annotation.RestController; /** The document controller class. */ @@ -21,4 +27,15 @@ public class DocController { public List getDocs() { return docService.getDocs(); } + + @PostMapping + @ResponseStatus(HttpStatus.CREATED) + public void postDocs(@RequestBody Doc doc) { + docService.addNewDoc(doc); + } + + @DeleteMapping(path = "{Id}") + public void deleteDocs(@PathVariable("Id") Long id) { + docService.deleteDoc(id); + } } diff --git a/src/main/java/com/terminaldweller/doc/DocRepository.java b/src/main/java/com/terminaldweller/doc/DocRepository.java new file mode 100644 index 0000000..387835e --- /dev/null +++ b/src/main/java/com/terminaldweller/doc/DocRepository.java @@ -0,0 +1,13 @@ +package com.terminaldweller.doc; + +import java.util.Optional; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +/** The interface of the doc class for the data store. */ +@Repository +public interface DocRepository extends JpaRepository { + @Query("SELECT d FROM Doc d WHERE d.name = ?1") + Optional findDocByName(String name); +} diff --git a/src/main/java/com/terminaldweller/doc/DocService.java b/src/main/java/com/terminaldweller/doc/DocService.java index 4aee30b..90fd9df 100644 --- a/src/main/java/com/terminaldweller/doc/DocService.java +++ b/src/main/java/com/terminaldweller/doc/DocService.java @@ -1,12 +1,48 @@ package com.terminaldweller.doc; import java.util.List; +import java.util.Optional; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** The document service class. */ @Service public class DocService { + private final DocRepository docRepository; + + @Autowired + public DocService(DocRepository docRepository) { + this.docRepository = docRepository; + } + public List getDocs() { - return List.of(new Doc(1L, "loco", 0L)); + return docRepository.findAll(); + // return List.of(new Doc(1L, "loco", 0L)); + } + + /** + * Adds a new Document to the data store. + * + * @param doc the new Document to add. + */ + public void addNewDoc(Doc doc) { + Optional docOptional = docRepository.findDocByName(doc.getName()); + if (docOptional.isPresent()) { + throw new IllegalStateException("Id is already taken"); + } + docRepository.save(doc); + } + + /** + * Deletes a document from the data store. + * + * @param id The identifier for the document to be deleted. + */ + public void deleteDoc(Long id) { + boolean exists = docRepository.existsById(id); + if (!exists) { + throw new IllegalStateException("doc " + id + " does not exitst"); + } + docRepository.deleteById(id); } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e0578c9..357f85a 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -5,3 +5,5 @@ spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect spring.jpa.properties.hibernate.format_sql=true + +server.error.include-message=always -- cgit v1.2.3