From d38d89fce2eaea9ad78cab12825a20539cee0bad Mon Sep 17 00:00:00 2001 From: umesh Date: Wed, 9 Jul 2025 10:58:10 +0530 Subject: [PATCH] Umesh Tayade - Code changes --- .../controller/PetTypeController.java | 34 +++++++++++ .../petclinic/model/ExtendedPetType.java | 61 +++++++++++++++++++ .../petclinic/repository/PetRepository.java | 8 +++ .../samples/petclinic/service/PetService.java | 34 +++++++++++ src/main/resources/application.properties | 9 +++ src/main/resources/db/h2/data.sql | 3 + src/main/resources/db/h2/schema.sql | 8 +++ 7 files changed, 157 insertions(+) create mode 100644 src/main/java/org/springframework/samples/petclinic/controller/PetTypeController.java create mode 100644 src/main/java/org/springframework/samples/petclinic/model/ExtendedPetType.java create mode 100644 src/main/java/org/springframework/samples/petclinic/repository/PetRepository.java create mode 100644 src/main/java/org/springframework/samples/petclinic/service/PetService.java diff --git a/src/main/java/org/springframework/samples/petclinic/controller/PetTypeController.java b/src/main/java/org/springframework/samples/petclinic/controller/PetTypeController.java new file mode 100644 index 000000000..3dacd0370 --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/controller/PetTypeController.java @@ -0,0 +1,34 @@ +package org.springframework.samples.petclinic.controller; + +import org.springframework.samples.petclinic.model.ExtendedPetType; +import org.springframework.samples.petclinic.service.PetService; +import org.springframework.web.bind.annotation.*; + +import java.util.Optional; + +@RestController +@RequestMapping("/api/extended-pet-types") +public class PetTypeController { + + private final PetService service; + + public PetTypeController(PetService service) { + this.service = service; + } + + @GetMapping + public Iterable getAll() { + return service.findAll(); + } + + @PostMapping + public ExtendedPetType add(@RequestBody ExtendedPetType petType) { + return service.save(petType); + } + + @GetMapping("/{id}") + public Optional getById(@PathVariable Integer id) { + return service.findById(id); + } + +} diff --git a/src/main/java/org/springframework/samples/petclinic/model/ExtendedPetType.java b/src/main/java/org/springframework/samples/petclinic/model/ExtendedPetType.java new file mode 100644 index 000000000..2820aa81c --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/model/ExtendedPetType.java @@ -0,0 +1,61 @@ +package org.springframework.samples.petclinic.model; + +import jakarta.persistence.*; + +@Entity +@Table(name = "pet_type") +public class ExtendedPetType { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String name; + + private String temperament; + + private Double length; + + private Double weight; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getTemperament() { + return temperament; + } + + public void setTemperament(String temperament) { + this.temperament = temperament; + } + + public Double getLength() { + return length; + } + + public void setLength(Double length) { + this.length = length; + } + + public Double getWeight() { + return weight; + } + + public void setWeight(Double weight) { + this.weight = weight; + } + +} diff --git a/src/main/java/org/springframework/samples/petclinic/repository/PetRepository.java b/src/main/java/org/springframework/samples/petclinic/repository/PetRepository.java new file mode 100644 index 000000000..27ce371f5 --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/repository/PetRepository.java @@ -0,0 +1,8 @@ +package org.springframework.samples.petclinic.repository; + +import org.springframework.data.repository.CrudRepository; +import org.springframework.samples.petclinic.model.ExtendedPetType; + +public interface PetRepository extends CrudRepository { + +} diff --git a/src/main/java/org/springframework/samples/petclinic/service/PetService.java b/src/main/java/org/springframework/samples/petclinic/service/PetService.java new file mode 100644 index 000000000..190ded95d --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/service/PetService.java @@ -0,0 +1,34 @@ +package org.springframework.samples.petclinic.service; + +import org.springframework.samples.petclinic.model.ExtendedPetType; +import org.springframework.samples.petclinic.repository.PetRepository; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +public class PetService { + + private final PetRepository repository; + + public PetService(PetRepository repository) { + this.repository = repository; + } + + public Iterable findAll() { + return repository.findAll(); + } + + public Optional findById(Integer id) { + return repository.findById(id); + } + + public ExtendedPetType save(ExtendedPetType petType) { + return repository.save(petType); + } + + public void deleteById(Integer id) { + repository.deleteById(id); + } + +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 6ed985654..babf9d60c 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -23,3 +23,12 @@ logging.level.org.springframework=INFO # Maximum time static resources should be cached spring.web.resources.cache.cachecontrol.max-age=12h + +spring.flyway.enabled=true + +spring.jpa.hibernate.ddl-auto=update +spring.datasource.url=jdbc:h2:mem:testdb +spring.datasource.driver-class-name=org.h2.Driver +spring.datasource.username=sa +spring.datasource.password= +spring.h2.console.enabled=true diff --git a/src/main/resources/db/h2/data.sql b/src/main/resources/db/h2/data.sql index f232b1361..5ee1bc93e 100644 --- a/src/main/resources/db/h2/data.sql +++ b/src/main/resources/db/h2/data.sql @@ -51,3 +51,6 @@ INSERT INTO visits VALUES (default, 7, '2013-01-01', 'rabies shot'); INSERT INTO visits VALUES (default, 8, '2013-01-02', 'rabies shot'); INSERT INTO visits VALUES (default, 8, '2013-01-03', 'neutered'); INSERT INTO visits VALUES (default, 7, '2013-01-04', 'spayed'); + +INSERT INTO extended_pet_type (name, temperament, length, weight) +VALUES ('Golden Retriever', 'cool', 30.0, 60.0); diff --git a/src/main/resources/db/h2/schema.sql b/src/main/resources/db/h2/schema.sql index 4a6c322cb..a7d92f9b9 100644 --- a/src/main/resources/db/h2/schema.sql +++ b/src/main/resources/db/h2/schema.sql @@ -62,3 +62,11 @@ CREATE TABLE visits ( ); ALTER TABLE visits ADD CONSTRAINT fk_visits_pets FOREIGN KEY (pet_id) REFERENCES pets (id); CREATE INDEX visits_pet_id ON visits (pet_id); + +CREATE TABLE extended_pet_type ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(255), + temperament VARCHAR(255), + length DOUBLE, + weight DOUBLE +);