From 5301ba1b2835f3c6e05d46a0629cd50e003773a4 Mon Sep 17 00:00:00 2001 From: litoral05 Date: Tue, 5 May 2026 10:11:09 +0100 Subject: [PATCH] Add routers table, entity, repository and GET endpoint --- .../litoralregas/openvpn/router/Router.java | 24 +++++++++++++++++++ .../openvpn/router/RouterController.java | 21 ++++++++++++++++ .../openvpn/router/RouterRepository.java | 7 ++++++ .../db/migration/V2__routers_table.sql | 10 ++++++++ 4 files changed, 62 insertions(+) create mode 100644 src/main/java/com/litoralregas/openvpn/router/Router.java create mode 100644 src/main/java/com/litoralregas/openvpn/router/RouterController.java create mode 100644 src/main/java/com/litoralregas/openvpn/router/RouterRepository.java create mode 100644 src/main/resources/db/migration/V2__routers_table.sql diff --git a/src/main/java/com/litoralregas/openvpn/router/Router.java b/src/main/java/com/litoralregas/openvpn/router/Router.java new file mode 100644 index 0000000..d5da1b4 --- /dev/null +++ b/src/main/java/com/litoralregas/openvpn/router/Router.java @@ -0,0 +1,24 @@ +package com.litoralregas.openvpn.router; + +import jakarta.persistence.*; +import java.time.LocalDateTime; +import java.util.UUID; + +@Entity +@Table(name = "routers") +public class Router { + + @Id + private UUID id; + + private String name; + private String serialNumber; + private String lanIp; + private String lanSubnet; + private String status; + + private LocalDateTime createdAt; + private LocalDateTime updatedAt; + + // getters and setters (for now, no Lombok) +} \ No newline at end of file diff --git a/src/main/java/com/litoralregas/openvpn/router/RouterController.java b/src/main/java/com/litoralregas/openvpn/router/RouterController.java new file mode 100644 index 0000000..69cd615 --- /dev/null +++ b/src/main/java/com/litoralregas/openvpn/router/RouterController.java @@ -0,0 +1,21 @@ +package com.litoralregas.openvpn.router; + +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/routers") +public class RouterController { + + private final RouterRepository repository; + + public RouterController(RouterRepository repository) { + this.repository = repository; + } + + @GetMapping + public List getAll() { + return repository.findAll(); + } +} \ No newline at end of file diff --git a/src/main/java/com/litoralregas/openvpn/router/RouterRepository.java b/src/main/java/com/litoralregas/openvpn/router/RouterRepository.java new file mode 100644 index 0000000..5fc05c5 --- /dev/null +++ b/src/main/java/com/litoralregas/openvpn/router/RouterRepository.java @@ -0,0 +1,7 @@ +package com.litoralregas.openvpn.router; + +import org.springframework.data.jpa.repository.JpaRepository; +import java.util.UUID; + +public interface RouterRepository extends JpaRepository { +} \ No newline at end of file diff --git a/src/main/resources/db/migration/V2__routers_table.sql b/src/main/resources/db/migration/V2__routers_table.sql new file mode 100644 index 0000000..6a6fe07 --- /dev/null +++ b/src/main/resources/db/migration/V2__routers_table.sql @@ -0,0 +1,10 @@ +CREATE TABLE routers ( + id UUID PRIMARY KEY, + name VARCHAR(120) NOT NULL, + serial_number VARCHAR(120), + lan_ip VARCHAR(50) NOT NULL, + lan_subnet VARCHAR(50) NOT NULL, + status VARCHAR(40) NOT NULL DEFAULT 'PENDING', + created_at TIMESTAMP NOT NULL DEFAULT now(), + updated_at TIMESTAMP NOT NULL DEFAULT now() +); \ No newline at end of file