瀏覽代碼

Added database part (Miguel)

wpfat23-5 2 年之前
父節點
當前提交
6e9a1f1c49

+ 10 - 1
pom.xml

@@ -46,7 +46,6 @@
             <scope>provided</scope>
         </dependency>
 
-
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-security</artifactId>
@@ -80,6 +79,16 @@
             <version>1.4.9</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+        </dependency>
+
     </dependencies>
     <dependencyManagement>
         <dependencies>

+ 59 - 0
src/main/java/com/deliveryproject/easydelivery/AppUserController.java

@@ -0,0 +1,59 @@
+package com.deliveryproject.easydelivery;
+
+import com.deliveryproject.easydelivery.Models.AppUser;
+import com.deliveryproject.easydelivery.Repository.AppUserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+import java.util.Optional;
+
+@RestController
+@RequestMapping("/api/users")
+public class AppUserController {
+
+    @Autowired
+    private AppUserRepository userRepository;
+
+    @PostMapping
+    public ResponseEntity<AppUser> createUser(@RequestBody AppUser user) {
+        AppUser savedUser = userRepository.save(user);
+        return new ResponseEntity<>(savedUser, HttpStatus.CREATED);
+    }
+
+    @GetMapping("/{id}")
+    public ResponseEntity<AppUser> getUserById(@PathVariable Long id) {
+        Optional<AppUser> userOptional = userRepository.findById(id);
+        return userOptional.map(user -> new ResponseEntity<>(user, HttpStatus.OK))
+                .orElseGet(() -> new ResponseEntity<>(HttpStatus.NOT_FOUND));
+    }
+
+    @GetMapping
+    public ResponseEntity<List<AppUser>> getAllUsers() {
+        List<AppUser> users = userRepository.findAll();
+        return new ResponseEntity<>(users, HttpStatus.OK);
+    }
+
+    @PutMapping("/{id}")
+    public ResponseEntity<AppUser> updateUser(@PathVariable Long id, @RequestBody AppUser user) {
+        Optional<AppUser> userOptional = userRepository.findById(id);
+        if (userOptional.isPresent()) {
+            user.setId(id);
+            AppUser updatedUser = userRepository.save(user);
+            return new ResponseEntity<>(updatedUser, HttpStatus.OK);
+        }
+        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+    }
+
+    @DeleteMapping("/{id}")
+    public ResponseEntity<HttpStatus> deleteUser(@PathVariable Long id) {
+        try {
+            userRepository.deleteById(id);
+            return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+        } catch (Exception e) {
+            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+        }
+    }
+}
+

+ 66 - 0
src/main/java/com/deliveryproject/easydelivery/DeliveryController.java

@@ -0,0 +1,66 @@
+package com.deliveryproject.easydelivery;
+
+import com.deliveryproject.easydelivery.Repository.DeliveryRepository;
+import com.deliveryproject.easydelivery.Models.Delivery;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+import java.util.Optional;
+@RestController
+@RequestMapping("/deliveries")
+public class DeliveryController {
+
+    @Autowired
+    private DeliveryRepository deliveryRepository;
+
+    @GetMapping
+    public ResponseEntity<List<Delivery>> getAllDeliveries() {
+        List<Delivery> deliveries = deliveryRepository.findAll();
+        return new ResponseEntity<>(deliveries, HttpStatus.OK);
+    }
+
+    @GetMapping("/{id}")
+    public ResponseEntity<Delivery> getDeliveryById(@PathVariable Long id) {
+        Optional<Delivery> optionalDelivery = deliveryRepository.findById(id);
+        if (optionalDelivery.isPresent()) {
+            Delivery delivery = optionalDelivery.get();
+            return ResponseEntity.ok(delivery);
+        } else {
+            return ResponseEntity.notFound().build();
+        }
+    }
+
+    @PostMapping
+    public ResponseEntity<Delivery> createDelivery(@RequestBody Delivery delivery) {
+        Delivery savedDelivery = deliveryRepository.save(delivery);
+        return ResponseEntity.status(HttpStatus.CREATED).body(savedDelivery);
+    }
+
+    @PutMapping("/{id}")
+    public ResponseEntity<Delivery> updateDelivery(@PathVariable Long id, @RequestBody Delivery delivery) {
+        Optional<Delivery> optionalDelivery = deliveryRepository.findById(id);
+        if (optionalDelivery.isPresent()) {
+            Delivery existingDelivery = optionalDelivery.get();
+            existingDelivery.setDeliveryAddress(delivery.getDeliveryAddress());
+            existingDelivery.setRecipientName(delivery.getRecipientName());
+            existingDelivery.setDeliveryTime(delivery.getDeliveryTime());
+            Delivery savedDelivery = deliveryRepository.save(existingDelivery);
+            return ResponseEntity.ok(savedDelivery);
+        } else {
+            return ResponseEntity.notFound().build();
+        }
+    }
+
+    @DeleteMapping("/{id}")
+    public ResponseEntity<Void> deleteDelivery(@PathVariable Long id) {
+        Optional<Delivery> optionalDelivery = deliveryRepository.findById(id);
+        if (optionalDelivery.isPresent()) {
+            deliveryRepository.delete(optionalDelivery.get());
+            return ResponseEntity.noContent().build();
+        } else {
+            return ResponseEntity.notFound().build();
+        }
+    }
+}

+ 47 - 0
src/main/java/com/deliveryproject/easydelivery/Models/AppUser.java

@@ -0,0 +1,47 @@
+package com.deliveryproject.easydelivery.Models;
+import javax.persistence.*;
+import java.util.List;
+
+@Entity
+@Table(name = "users")
+public class AppUser {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private Long id;
+
+    @Column(name = "client_id", nullable = false, unique = true)
+    private String clientId;
+
+    @Column(name = "name", nullable = false)
+    private String name;
+
+    @OneToMany //(mappedBy = "user")
+    private List<Delivery> deliveries;
+
+    public Long getId() {
+        return id;
+    }
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getClientId() {
+        return clientId;
+    }
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+    public String getName() {
+        return name;
+    }
+    public void setName(String name) {
+        this.name = name;
+    }
+    public List<Delivery> getDeliveries() {
+        return deliveries;
+    }
+    public void setDeliveries(List<Delivery> deliveries) {
+        this.deliveries = deliveries;
+    }
+}

+ 56 - 0
src/main/java/com/deliveryproject/easydelivery/Models/Delivery.java

@@ -0,0 +1,56 @@
+package com.deliveryproject.easydelivery.Models;
+import javax.persistence.*;
+import java.time.LocalDateTime;
+
+@Entity
+@Table(name = "delivery")
+public class Delivery {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private Long id;
+
+    @Column(name = "delivery_address", nullable = false)
+    private String deliveryAddress;
+
+    @Column(name = "recipient_name", nullable = false)
+    private String recipientName;
+
+    @Column(name = "delivery_time", nullable = false)
+    private LocalDateTime deliveryTime;
+
+    // constructors, getters and setters
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getDeliveryAddress() {
+        return deliveryAddress;
+    }
+
+    public void setDeliveryAddress(String deliveryAddress) {
+        this.deliveryAddress = deliveryAddress;
+    }
+
+    public String getRecipientName() {
+        return recipientName;
+    }
+
+    public void setRecipientName(String recipientName) {
+        this.recipientName = recipientName;
+    }
+
+    public LocalDateTime getDeliveryTime() {
+        return deliveryTime;
+    }
+
+    public void setDeliveryTime(LocalDateTime deliveryTime) {
+        this.deliveryTime = deliveryTime;
+    }
+}

+ 49 - 0
src/main/java/com/deliveryproject/easydelivery/Models/Packet.java

@@ -0,0 +1,49 @@
+package com.deliveryproject.easydelivery.Models;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "packets")
+public class Packet {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "description")
+    private String description;
+
+    @Column(name = "quantity")
+    private int quantity;
+
+    public Packet() {}
+
+    public Packet(String description, int quantity) {
+        this.description = description;
+        this.quantity = quantity;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public int getQuantity() {
+        return quantity;
+    }
+
+    public void setQuantity(int quantity) {
+        this.quantity = quantity;
+    }
+
+}

+ 57 - 0
src/main/java/com/deliveryproject/easydelivery/PacketController.java

@@ -0,0 +1,57 @@
+package com.deliveryproject.easydelivery;
+
+import com.deliveryproject.easydelivery.Models.Packet;
+import com.deliveryproject.easydelivery.Repository.PacketRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+import java.util.Optional;
+@RestController
+@RequestMapping("/api/packets")
+public class PacketController {
+
+    @Autowired
+    private PacketRepository packetRepository;
+
+    @PostMapping
+    public ResponseEntity<Packet> createPacket(@RequestBody Packet packet) {
+        Packet savedPacket = packetRepository.save(packet);
+        return new ResponseEntity<>(savedPacket, HttpStatus.CREATED);
+    }
+
+    @GetMapping("/{id}")
+    public ResponseEntity<Packet> getPacketById(@PathVariable Long id) {
+        Optional<Packet> packetOptional = packetRepository.findById(id);
+        return packetOptional.map(packet -> new ResponseEntity<>(packet, HttpStatus.OK))
+                .orElseGet(() -> new ResponseEntity<>(HttpStatus.NOT_FOUND));
+    }
+
+    @GetMapping
+    public ResponseEntity<List<Packet>> getAllPackets() {
+        List<Packet> packets = packetRepository.findAll();
+        return new ResponseEntity<>(packets, HttpStatus.OK);
+    }
+
+    @PutMapping("/{id}")
+    public ResponseEntity<Packet> updatePacket(@PathVariable Long id, @RequestBody Packet packet) {
+        Optional<Packet> packetOptional = packetRepository.findById(id);
+        if (packetOptional.isPresent()) {
+            packet.setId(id);
+            Packet updatedPacket = packetRepository.save(packet);
+            return new ResponseEntity<>(updatedPacket, HttpStatus.OK);
+        }
+        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+    }
+
+    @DeleteMapping("/{id}")
+    public ResponseEntity<HttpStatus> deletePacket(@PathVariable Long id) {
+        try {
+            packetRepository.deleteById(id);
+            return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+        } catch (Exception e) {
+            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+        }
+    }
+}

+ 10 - 0
src/main/java/com/deliveryproject/easydelivery/Repository/AppUserRepository.java

@@ -0,0 +1,10 @@
+package com.deliveryproject.easydelivery.Repository;
+
+import com.deliveryproject.easydelivery.Models.AppUser;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface AppUserRepository extends JpaRepository<AppUser, Long> {
+    // You can add custom query methods for specific database operations related to the User entity if needed
+}

+ 8 - 0
src/main/java/com/deliveryproject/easydelivery/Repository/DeliveryRepository.java

@@ -0,0 +1,8 @@
+package com.deliveryproject.easydelivery.Repository;
+import com.deliveryproject.easydelivery.Models.Delivery;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface DeliveryRepository extends JpaRepository<Delivery, Long> {
+}

+ 9 - 0
src/main/java/com/deliveryproject/easydelivery/Repository/PacketRepository.java

@@ -0,0 +1,9 @@
+package com.deliveryproject.easydelivery.Repository;
+
+import com.deliveryproject.easydelivery.Models.Packet;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface PacketRepository extends JpaRepository<Packet, Long> {
+}

+ 6 - 1
src/main/resources/application.properties

@@ -3,4 +3,9 @@ keycloak.auth-server-url=http://localhost:8181/auth
 keycloak.resource=login-app
 keycloak.public-client=true
 keycloak.bearer-only=true
-keycloak.use-resource-role-mappings=true
+keycloak.use-resource-role-mappings=true
+spring.datasource.url=jdbc:postgresql://localhost:5432/DistributionCompany
+spring.datasource.username=postgres
+spring.datasource.password=postgres
+spring.jpa.hibernate.ddl-auto=create
+spring.jpa.show-sql=true