From ef6554b2a7f3515b00cfc67ae5affe62af811e80 Mon Sep 17 00:00:00 2001 From: Telman Bayram Date: Mon, 10 Mar 2025 17:00:49 +0400 Subject: [PATCH] Added some dependencies --- pom.xml | 5 +++ .../postgresdemo/PostgresDemoApplication.java | 6 ++++ .../controller/AnswerController.java | 4 +-- .../controller/QuestionController.java | 11 +++--- .../example/postgresdemo/model/Answer.java | 34 ++++++------------- .../postgresdemo/model/AuditModel.java | 23 ++++--------- .../example/postgresdemo/model/Question.java | 32 +++++------------ .../repository/AnswerRepository.java | 3 +- .../repository/QuestionRepository.java | 1 + src/main/resources/application.properties | 19 ++++++++--- 10 files changed, 64 insertions(+), 74 deletions(-) diff --git a/pom.xml b/pom.xml index 2c23e76..b55da0b 100644 --- a/pom.xml +++ b/pom.xml @@ -47,6 +47,11 @@ spring-boot-starter-test test + + org.projectlombok + lombok + true + diff --git a/src/main/java/com/example/postgresdemo/PostgresDemoApplication.java b/src/main/java/com/example/postgresdemo/PostgresDemoApplication.java index 29cf2e1..055e80d 100644 --- a/src/main/java/com/example/postgresdemo/PostgresDemoApplication.java +++ b/src/main/java/com/example/postgresdemo/PostgresDemoApplication.java @@ -2,10 +2,16 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.annotation.ComponentScan; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @SpringBootApplication @EnableJpaAuditing +@EntityScan(basePackages = "com.example.postgresdemo") +@ComponentScan(basePackages = "com.example.postgresdemo") +@EnableJpaRepositories(basePackages = "com.example.postgresdemo") public class PostgresDemoApplication { public static void main(String[] args) { SpringApplication.run(PostgresDemoApplication.class, args); diff --git a/src/main/java/com/example/postgresdemo/controller/AnswerController.java b/src/main/java/com/example/postgresdemo/controller/AnswerController.java index 7cfaa47..c3cdb7b 100644 --- a/src/main/java/com/example/postgresdemo/controller/AnswerController.java +++ b/src/main/java/com/example/postgresdemo/controller/AnswerController.java @@ -20,12 +20,12 @@ public class AnswerController { private QuestionRepository questionRepository; @GetMapping("/questions/{questionId}/answers") - public List getAnswersByQuestionId(@PathVariable Long questionId) { + public List getAnswersByQuestionId(@PathVariable(value = "questionId") Long questionId) { return answerRepository.findByQuestionId(questionId); } @PostMapping("/questions/{questionId}/answers") - public Answer addAnswer(@PathVariable Long questionId, + public Answer addAnswer(@PathVariable(value = "questionId") Long questionId, @Valid @RequestBody Answer answer) { return questionRepository.findById(questionId) .map(question -> { diff --git a/src/main/java/com/example/postgresdemo/controller/QuestionController.java b/src/main/java/com/example/postgresdemo/controller/QuestionController.java index c231819..74ad706 100644 --- a/src/main/java/com/example/postgresdemo/controller/QuestionController.java +++ b/src/main/java/com/example/postgresdemo/controller/QuestionController.java @@ -11,23 +11,24 @@ import javax.validation.Valid; @RestController +@RequestMapping("/questions") public class QuestionController { @Autowired private QuestionRepository questionRepository; - @GetMapping("/questions") + @GetMapping("/list") public Page getQuestions(Pageable pageable) { return questionRepository.findAll(pageable); } - @PostMapping("/questions") + @PostMapping("/create") public Question createQuestion(@Valid @RequestBody Question question) { return questionRepository.save(question); } - @PutMapping("/questions/{questionId}") + @PutMapping("/{questionId}") public Question updateQuestion(@PathVariable Long questionId, @Valid @RequestBody Question questionRequest) { return questionRepository.findById(questionId) @@ -39,10 +40,10 @@ public Question updateQuestion(@PathVariable Long questionId, } - @DeleteMapping("/questions/{questionId}") + @DeleteMapping("/{questionId}") public ResponseEntity deleteQuestion(@PathVariable Long questionId) { return questionRepository.findById(questionId) - .map(question -> { + .map(question -> { questionRepository.delete(question); return ResponseEntity.ok().build(); }).orElseThrow(() -> new ResourceNotFoundException("Question not found with id " + questionId)); diff --git a/src/main/java/com/example/postgresdemo/model/Answer.java b/src/main/java/com/example/postgresdemo/model/Answer.java index b5e48d0..e07f11a 100644 --- a/src/main/java/com/example/postgresdemo/model/Answer.java +++ b/src/main/java/com/example/postgresdemo/model/Answer.java @@ -1,6 +1,12 @@ package com.example.postgresdemo.model; import com.fasterxml.jackson.annotation.JsonIgnore; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + import org.hibernate.annotations.OnDelete; import org.hibernate.annotations.OnDeleteAction; @@ -8,6 +14,10 @@ @Entity @Table(name = "answers") +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor public class Answer extends AuditModel { @Id @GeneratedValue(generator = "answer_generator") @@ -27,27 +37,5 @@ public class Answer extends AuditModel { @JsonIgnore private Question question; - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getText() { - return text; - } - - public void setText(String text) { - this.text = text; - } - - public Question getQuestion() { - return question; - } - - public void setQuestion(Question question) { - this.question = question; - } + } diff --git a/src/main/java/com/example/postgresdemo/model/AuditModel.java b/src/main/java/com/example/postgresdemo/model/AuditModel.java index a61a3b8..4b7434c 100644 --- a/src/main/java/com/example/postgresdemo/model/AuditModel.java +++ b/src/main/java/com/example/postgresdemo/model/AuditModel.java @@ -1,13 +1,18 @@ package com.example.postgresdemo.model; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import lombok.Getter; +import lombok.Setter; + import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import javax.persistence.*; import java.io.Serializable; import java.util.Date; - +@Getter +@Setter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) @JsonIgnoreProperties( @@ -25,19 +30,5 @@ public abstract class AuditModel implements Serializable { @LastModifiedDate private Date updatedAt; - public Date getCreatedAt() { - return createdAt; - } - - public void setCreatedAt(Date createdAt) { - this.createdAt = createdAt; - } - - public Date getUpdatedAt() { - return updatedAt; - } - - public void setUpdatedAt(Date updatedAt) { - this.updatedAt = updatedAt; - } + } \ No newline at end of file diff --git a/src/main/java/com/example/postgresdemo/model/Question.java b/src/main/java/com/example/postgresdemo/model/Question.java index d16a459..e43fad4 100644 --- a/src/main/java/com/example/postgresdemo/model/Question.java +++ b/src/main/java/com/example/postgresdemo/model/Question.java @@ -4,8 +4,17 @@ import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + @Entity @Table(name = "questions") +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor public class Question extends AuditModel { @Id @GeneratedValue(generator = "question_generator") @@ -23,27 +32,4 @@ public class Question extends AuditModel { @Column(columnDefinition = "text") private String description; - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - 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/com/example/postgresdemo/repository/AnswerRepository.java b/src/main/java/com/example/postgresdemo/repository/AnswerRepository.java index 761f91f..16ed483 100644 --- a/src/main/java/com/example/postgresdemo/repository/AnswerRepository.java +++ b/src/main/java/com/example/postgresdemo/repository/AnswerRepository.java @@ -7,5 +7,6 @@ @Repository public interface AnswerRepository extends JpaRepository { - List findByQuestionId(Long questionId); + + List findByQuestionId(Long questionId); } diff --git a/src/main/java/com/example/postgresdemo/repository/QuestionRepository.java b/src/main/java/com/example/postgresdemo/repository/QuestionRepository.java index 290373d..5a10301 100644 --- a/src/main/java/com/example/postgresdemo/repository/QuestionRepository.java +++ b/src/main/java/com/example/postgresdemo/repository/QuestionRepository.java @@ -6,4 +6,5 @@ @Repository public interface QuestionRepository extends JpaRepository { + } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 35b376a..901dd9e 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,10 +1,21 @@ ## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties) -spring.datasource.url=jdbc:postgresql://localhost:5432/postgres_demo -spring.datasource.username= postgres -spring.datasource.password= +spring.datasource.url=jdbc:postgresql://localhost:5432/postgres + +spring.datasource.password=1 # The SQL dialect makes Hibernate generate better SQL for the chosen database spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect # Hibernate ddl auto (create, create-drop, validate, update) -spring.jpa.hibernate.ddl-auto = update +spring.jpa.hibernate.ddl-auto = create + + +spring.application.name=postgres-demo + + +spring.datasource.username=postgres +spring.jpa.properties.hibernate.default_schema=posgresdemo + + +spring.jpa.show-sql=true +spring.jpa.properties.hibernate.format_sql=true \ No newline at end of file