Daniel Garcia Costa 3 тижнів тому
батько
коміт
cb8d48a22c

+ 1 - 0
docker/start_mongo.sh

@@ -0,0 +1 @@
+docker run -d --name bidflow-mongo -p 27017:27017 mongo:7

+ 7 - 1
pom.xml

@@ -30,9 +30,15 @@
 		<java.version>21</java.version>
 	</properties>
 	<dependencies>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-webmvc</artifactId>
+			<artifactId>spring-boot-starter-data-mongodb</artifactId>
 		</dependency>
 
 		<dependency>

+ 27 - 0
src/main/java/bidflow/auction/persistence/controller/AuctionController.java

@@ -0,0 +1,27 @@
+package bidflow.auction.persistence.controller;
+
+import bidflow.auction.persistence.domain.Auction;
+import bidflow.auction.persistence.service.AuctionService;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/auctions")
+public class AuctionController {
+
+    @Autowired
+    private AuctionService auctionService;
+
+    @GetMapping
+    public List<Auction> findAll() {
+        return auctionService.findAll();
+    }
+
+    @PostMapping
+    public Auction save(@RequestBody Auction auction) {
+        return auctionService.save(auction);
+    }
+}

+ 94 - 0
src/main/java/bidflow/auction/persistence/domain/Auction.java

@@ -0,0 +1,94 @@
+package bidflow.auction.persistence.domain;
+
+import org.springframework.data.mongodb.core.mapping.Document;
+import org.springframework.data.mongodb.core.mapping.MongoId;
+
+import java.time.Instant;
+import java.util.List;
+
+@Document(collection = "auctions")
+public class Auction {
+
+    @MongoId
+    private String auctionId;
+
+    private String itemId;
+    private String sellerId;
+
+    private Instant startTime;
+    private Instant endTime;
+
+    private Double finalPrice;
+    private String winnerUserId;
+
+    private List<Bid> bids;
+
+    public Auction() {}
+
+    public String getAuctionId() {
+        return auctionId;
+    }
+
+    public void setAuctionId(String auctionId) {
+        this.auctionId = auctionId;
+    }
+
+    public String getItemId() {
+        return itemId;
+    }
+
+    public void setItemId(String itemId) {
+        this.itemId = itemId;
+    }
+
+    public String getSellerId() {
+        return sellerId;
+    }
+
+    public void setSellerId(String sellerId) {
+        this.sellerId = sellerId;
+    }
+
+    public Instant getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Instant startTime) {
+        this.startTime = startTime;
+    }
+
+    public Instant getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Instant endTime) {
+        this.endTime = endTime;
+    }
+
+    public Double getFinalPrice() {
+        return finalPrice;
+    }
+
+    public void setFinalPrice(Double finalPrice) {
+        this.finalPrice = finalPrice;
+    }
+
+    public String getWinnerUserId() {
+        return winnerUserId;
+    }
+
+    public void setWinnerUserId(String winnerUserId) {
+        this.winnerUserId = winnerUserId;
+    }
+
+    public List<Bid> getBids() {
+        return bids;
+    }
+
+    public void setBids(List<Bid> bids) {
+        this.bids = bids;
+    }
+
+    
+
+}

+ 44 - 0
src/main/java/bidflow/auction/persistence/domain/Bid.java

@@ -0,0 +1,44 @@
+package bidflow.auction.persistence.domain;
+
+import java.time.Instant;
+
+public class Bid {
+
+    private String userId;
+    private Double amount;
+    private Instant timestamp;
+
+    public Bid() {}
+
+    public Bid(String userId, Double amount, Instant timestamp) {
+        this.userId = userId;
+        this.amount = amount;
+        this.timestamp = timestamp;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public Double getAmount() {
+        return amount;
+    }
+
+    public void setAmount(Double amount) {
+        this.amount = amount;
+    }
+
+    public Instant getTimestamp() {
+        return timestamp;
+    }
+
+    public void setTimestamp(Instant timestamp) {
+        this.timestamp = timestamp;
+    }
+
+    
+}

+ 8 - 0
src/main/java/bidflow/auction/persistence/repository/AuctionRepository.java

@@ -0,0 +1,8 @@
+package bidflow.auction.persistence.repository;
+
+import bidflow.auction.persistence.domain.Auction;
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+import java.util.UUID;
+
+public interface AuctionRepository extends MongoRepository<Auction, UUID> { }

+ 25 - 0
src/main/java/bidflow/auction/persistence/service/AuctionService.java

@@ -0,0 +1,25 @@
+package bidflow.auction.persistence.service;
+
+import bidflow.auction.persistence.domain.Auction;
+import bidflow.auction.persistence.repository.AuctionRepository;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AuctionService {
+
+    @Autowired
+    private AuctionRepository auctionRepository;
+
+    public List<Auction> findAll() {
+        return auctionRepository.findAll();
+    }
+
+    public Auction save(Auction auction) {
+        return auctionRepository.save(auction);
+    }
+}
+

+ 7 - 0
src/main/resources/application.properties

@@ -1 +1,8 @@
 spring.application.name=persistence
+server.port=8084
+
+#spring.mongodb.host=localhost
+#spring.mongodb.port=27017
+#spring.mongodb.database=bidflow
+
+spring.mongodb.uri=mongodb://localhost:27017/bidflow