From c78f2713c3d0290feed104a2d3bf16d31b9494f2 Mon Sep 17 00:00:00 2001 From: hitanshu310 Date: Mon, 16 Feb 2026 00:38:23 +0530 Subject: [PATCH] Fix LazyInitializationException and update hostname format --- .../CFTunnels/Repositories/RequestRepository.java | 10 ++++++++++ .../CFTunnels/Services/MappingRequestService.java | 9 +++++---- src/main/resources/application-local.properties | 2 +- src/main/resources/application-prod.properties | 4 ++-- src/main/resources/application-test.properties | 2 +- 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/hithomelabs/CFTunnels/Repositories/RequestRepository.java b/src/main/java/com/hithomelabs/CFTunnels/Repositories/RequestRepository.java index cdf9fa6..0b89b5c 100644 --- a/src/main/java/com/hithomelabs/CFTunnels/Repositories/RequestRepository.java +++ b/src/main/java/com/hithomelabs/CFTunnels/Repositories/RequestRepository.java @@ -4,11 +4,21 @@ import com.hithomelabs.CFTunnels.Entity.Request; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; +import java.util.Optional; import java.util.UUID; @Repository public interface RequestRepository extends JpaRepository { Page findByStatus(Request.RequestStatus status, Pageable pageable); + + @Query("SELECT r FROM Request r JOIN FETCH r.mapping m JOIN FETCH m.tunnel JOIN FETCH r.createdBy LEFT JOIN FETCH r.acceptedBy") + List findAllWithDetails(); + + @Query("SELECT r FROM Request r JOIN FETCH r.mapping m JOIN FETCH m.tunnel JOIN FETCH r.createdBy LEFT JOIN FETCH r.acceptedBy WHERE r.id = :id") + Optional findByIdWithDetails(@Param("id") UUID id); } diff --git a/src/main/java/com/hithomelabs/CFTunnels/Services/MappingRequestService.java b/src/main/java/com/hithomelabs/CFTunnels/Services/MappingRequestService.java index f66b1d0..ba86144 100644 --- a/src/main/java/com/hithomelabs/CFTunnels/Services/MappingRequestService.java +++ b/src/main/java/com/hithomelabs/CFTunnels/Services/MappingRequestService.java @@ -59,8 +59,9 @@ public class MappingRequestService { return createRequest(mapping, user); } + @Transactional(readOnly = true) public List getAllRequests() { - return requestRepository.findAll(); + return requestRepository.findAllWithDetails(); } public User mapUser(OidcUser oidcUser){ @@ -99,7 +100,7 @@ public class MappingRequestService { @Transactional public Request approveRequest(UUID requestId, User approver) { - Request request = requestRepository.findById(requestId) + Request request = requestRepository.findByIdWithDetails(requestId) .orElseThrow(() -> new NoSuchElementException("Request not found")); if (request.getStatus() != Request.RequestStatus.PENDING) { @@ -127,7 +128,7 @@ public class MappingRequestService { @Transactional public Request rejectRequest(UUID requestId, User rejecter) { - Request request = requestRepository.findById(requestId) + Request request = requestRepository.findByIdWithDetails(requestId) .orElseThrow(() -> new NoSuchElementException("Request not found")); if (request.getStatus() != Request.RequestStatus.PENDING) { @@ -145,7 +146,7 @@ public class MappingRequestService { Tunnel tunnel = mapping.getTunnel(); String protocol = mapping.getProtocol().name().toLowerCase(); String service = protocol + "://" + SERVER_IP + ":" + mapping.getPort(); - String hostname = mapping.getSubdomain() + "." + tunnel.getName() + ".hithomelabs.com"; + String hostname = mapping.getSubdomain() + ".hithomelabs.com"; return new Ingress(service, hostname, null, null); } } diff --git a/src/main/resources/application-local.properties b/src/main/resources/application-local.properties index 4f27f96..60ec5d5 100644 --- a/src/main/resources/application-local.properties +++ b/src/main/resources/application-local.properties @@ -7,6 +7,6 @@ management.endpoint.health.show-details=always logging.level.org.hibernate.SQL=DEBUG debug=true -spring.jpa.hibernate.ddl-auto=create-drop +spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.datasource.url=jdbc:postgresql://localhost:5432/cftunnel diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index aefe0ab..cb15c36 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -7,6 +7,6 @@ spring.datasource.password=${POSTGRES_PASSWORD} spring.datasource.driver-class-name=org.postgresql.Driver # JPA Configuration -spring.jpa.hibernate.ddl-auto=create-drop -spring.jpa.show-sql=true +spring.jpa.hibernate.ddl-auto=update +spring.jpa.show-sql=false spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect \ No newline at end of file diff --git a/src/main/resources/application-test.properties b/src/main/resources/application-test.properties index 2064163..b257503 100644 --- a/src/main/resources/application-test.properties +++ b/src/main/resources/application-test.properties @@ -7,6 +7,6 @@ spring.datasource.password=${POSTGRES_PASSWORD} spring.datasource.driver-class-name=org.postgresql.Driver # JPA Configuration -spring.jpa.hibernate.ddl-auto=create-drop +spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect -- 2.45.2