Kaynağa Gözat

orderbook routes

EduLascala 1 ay önce
ebeveyn
işleme
8138380b6d

+ 36 - 0
routes.md

@@ -32,6 +32,8 @@ Default headers for protected routes:
 ```bash
 POST {{baseUrl}}/auth/register/default
 ```
+- email = "tester@tooeasy.local" 
+- password = "ChangeMe123!"
 
 ## POST {{baseUrl}}/auth/register
 - Body (application/json) — fields from `RegisterDTO` (`src/main/java/com/platform2easy/genesis/web/dto/RegisterDTO.java`):
@@ -95,6 +97,40 @@ POST {{baseUrl}}/auth/register/default
 Notes:
 - Fields: `name` (String), `flag` (String).
 
+## Orderbook API (`com.platform2easy.genesis.web.controller.OrderbookController`)
+#### Base path: {{baseUrl}}/api/orderbook
+
+- GET {{baseUrl}}/api/orderbook
+  - List all orderbook entries.
+
+- GET {{baseUrl}}/api/orderbook/{id}
+  - Path params: id (Long)
+
+- POST {{baseUrl}}/api/orderbook
+  - Body — entity `Orderbook` (`domain/model/Orderbook.java`):
+```json
+{
+  "flag": "ACTIVE",
+  "ts": 1696200000,
+  "isToken": true,
+  "amount": "1000",
+  "statusId": 1,
+  "userId": 1,
+  "walletId": 1,
+  "tokenId": 1,
+  "currencyId": 1,
+  "chainId": 1
+}
+```
+
+- PUT {{baseUrl}}/api/orderbook/{id}
+  - Body: same as POST
+
+- DELETE {{baseUrl}}/api/orderbook/{id}
+
+Notes:
+- Protected by JWT (Authorization: Bearer {{token}}).
+
 
 ## Compra API (`com.platform2easy.genesis.web.controller.CompraController`)
 #### Base path: {{baseUrl}}/api/compra

+ 34 - 0
src/main/java/com/platform2easy/genesis/domain/service/OrderbookService.java

@@ -0,0 +1,34 @@
+package com.platform2easy.genesis.domain.service;
+
+import com.platform2easy.genesis.domain.model.Orderbook;
+import com.platform2easy.genesis.domain.repository.OrderbookRepository;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class OrderbookService {
+
+    private final OrderbookRepository repository;
+
+    @Transactional
+    public Orderbook salvar(Orderbook orderbook) {
+        repository.save(orderbook);
+        return orderbook;
+    }
+
+    public List<Orderbook> listarTodos() {
+        return repository.findAll();
+    }
+
+    public Orderbook buscarPorId(Long id) {
+        return repository.findById(id).orElseThrow();
+    }
+
+    public void deletarPorId(Long id) {
+        repository.deleteById(id);
+    }
+}

+ 54 - 0
src/main/java/com/platform2easy/genesis/web/controller/OrderbookController.java

@@ -0,0 +1,54 @@
+package com.platform2easy.genesis.web.controller;
+
+import com.platform2easy.genesis.domain.model.Orderbook;
+import com.platform2easy.genesis.domain.service.OrderbookService;
+import lombok.AllArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/orderbook")
+@AllArgsConstructor
+public class OrderbookController {
+
+    private final OrderbookService service;
+
+    // GET /api/orderbook: Lista todos
+    @GetMapping
+    @ResponseStatus(HttpStatus.OK)
+    public List<Orderbook> listAll() {
+        return service.listarTodos();
+    }
+
+    // GET /api/orderbook/{id}: Busca por ID
+    @GetMapping("/{id}")
+    @ResponseStatus(HttpStatus.OK)
+    public Orderbook getById(@PathVariable Long id) {
+        return service.buscarPorId(id);
+    }
+
+    // POST /api/orderbook: Cria um novo registro
+    @PostMapping
+    @ResponseStatus(HttpStatus.CREATED)
+    public Orderbook create(@RequestBody Orderbook orderbook) {
+        orderbook.setId(null);
+        return service.salvar(orderbook);
+    }
+
+    // PUT /api/orderbook/{id}: Atualiza um registro existente
+    @PutMapping("/{id}")
+    @ResponseStatus(HttpStatus.OK)
+    public Orderbook update(@PathVariable Long id, @RequestBody Orderbook orderbook) {
+        orderbook.setId(id);
+        return service.salvar(orderbook);
+    }
+
+    // DELETE /api/orderbook/{id}: Deleta um registro
+    @DeleteMapping("/{id}")
+    @ResponseStatus(HttpStatus.NO_CONTENT)
+    public void delete(@PathVariable Long id) {
+        service.deletarPorId(id);
+    }
+}