Skip to content

Commit

Permalink
[BE] 스프린트 4 개발 산출물
Browse files Browse the repository at this point in the history
[BE] 스프린트 4 개발 산출물
  • Loading branch information
mikekks authored Feb 25, 2025
2 parents b26a5ae + 96fefc3 commit ecfa631
Show file tree
Hide file tree
Showing 75 changed files with 2,037 additions and 371 deletions.
4 changes: 3 additions & 1 deletion uniro_backend/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,6 @@ COPY ${JAR_FILE} uniro-server.jar

ENV SPRING_PROFILE=${SPRING_PROFILE}

ENTRYPOINT ["java", "-Duser.timezone=Asia/Seoul","-Dspring.profiles.active=${SPRING_PROFILE}" ,"-jar" ,"uniro-server.jar"]
# JVM 메모리 설정 추가
ENTRYPOINT ["java", "-Duser.timezone=Asia/Seoul","-Dspring.profiles.active=${SPRING_PROFILE}","-XX:+HeapDumpOnOutOfMemoryError","-XX:HeapDumpPath=/tmp/heapdump.hprof", "-Xmx500m", "-jar", "uniro-server.jar"]

10 changes: 10 additions & 0 deletions uniro_backend/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,10 @@ dependencies {
// actuator
implementation 'org.springframework.boot:spring-boot-starter-actuator'

// prometheus
implementation 'io.micrometer:micrometer-registry-prometheus'


// test container
testImplementation 'org.testcontainers:testcontainers:1.19.5'
testImplementation 'org.testcontainers:junit-jupiter:1.19.5'
Expand All @@ -84,6 +88,12 @@ dependencies {
implementation group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.5'
implementation 'com.auth0:java-jwt:4.4.0'

// redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-cache'
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-hibernate6'
implementation 'com.alibaba.fastjson2:fastjson2-extension-spring6:2.0.55'
}

tasks.named('test') {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.scheduling.annotation.EnableAsync;

@SpringBootApplication
@EnableJpaAuditing
@EnableAsync
public class UniroBackendApplication {

public static void main(String[] args) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

import static com.softeer5.uniro_backend.common.constant.UniroConst.*;

import java.time.LocalDateTime;

@Aspect
@Component
@Order(BEFORE_DEFAULT_ORDER)
Expand All @@ -22,6 +24,7 @@ public class RevisionOperationAspect {
@Around("@annotation(revisionOperation)")
public Object around(ProceedingJoinPoint joinPoint, RevisionOperation revisionOperation) throws Throwable {
RevisionOperationType opType = revisionOperation.value();
RevisionContext.setTimeStamp(LocalDateTime.now());

Object result;
switch (opType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ public class ChangedRouteDTO {
@Schema(description = "현재", example = "")
private final RouteDifferInfo current;
@Schema(description = "해당 버전 (과거)", example = "")
private final RouteDifferInfo revision;
private final RouteDifferInfo difference;

public static ChangedRouteDTO of(Long id, RouteDifferInfo current, RouteDifferInfo revision) {
return new ChangedRouteDTO(id, current, revision);
public static ChangedRouteDTO of(Long id, RouteDifferInfo current, RouteDifferInfo difference) {
return new ChangedRouteDTO(id, current, difference);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.softeer5.uniro_backend.admin.dto.response;

import com.softeer5.uniro_backend.map.dto.response.GetAllRoutesResDTO;
import com.softeer5.uniro_backend.map.dto.response.AllRoutesInfo;
import com.softeer5.uniro_backend.map.dto.response.GetRiskRoutesResDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AccessLevel;
Expand All @@ -14,15 +14,15 @@
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public class GetAllRoutesByRevisionResDTO {
@Schema(description = "특정 버전에 존재하는 길&노드 스냅샷 정보", example = "")
private final GetAllRoutesResDTO routesInfo;
private final AllRoutesInfo routesInfo;
@Schema(description = "특정 버전에 존재하는 위험 요소 스냅샷 정보", example = "")
private final GetRiskRoutesResDTO getRiskRoutesResDTO;
@Schema(description = "삭제된 길&노드 정보 정보", example = "")
private final LostRoutesDTO lostRoutes;
@Schema(description = "현재 버전과 비교하여 변경된 주의/위험 요소 정보", example = "")
private final List<ChangedRouteDTO> changedList;

public static GetAllRoutesByRevisionResDTO of(GetAllRoutesResDTO routesInfo, GetRiskRoutesResDTO getRiskRoutesResDTO,
public static GetAllRoutesByRevisionResDTO of(AllRoutesInfo routesInfo, GetRiskRoutesResDTO getRiskRoutesResDTO,
LostRoutesDTO lostRoutes, List<ChangedRouteDTO> changedList) {
return new GetAllRoutesByRevisionResDTO(routesInfo, getRiskRoutesResDTO, lostRoutes, changedList);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.softeer5.uniro_backend.admin.repository;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.envers.AuditReader;
import org.hibernate.envers.AuditReaderFactory;
Expand All @@ -21,10 +24,18 @@ public class NodeAuditRepository {

public List<Node> getAllNodesAtRevision(Long univId, Long versionId) {
AuditReader auditReader = AuditReaderFactory.get(entityManager);
return auditReader.createQuery()
.forEntitiesAtRevision(Node.class, versionId)
.add(AuditEntity.property("univId").eq(univId))
.getResultList();
List<Node> allRevisions = auditReader.createQuery()
.forRevisionsOfEntity(Node.class, true, true)
.add(AuditEntity.revisionNumber().le(versionId))
.add(AuditEntity.property("univId").eq(univId))
.addOrder(AuditEntity.revisionNumber().asc())
.getResultList();

Map<Long, Node> uniqueNodesMap = new HashMap<>();
for (Node node : allRevisions) {
uniqueNodesMap.put(node.getId(), node);
}
return new ArrayList<>(uniqueNodesMap.values());
}

public void deleteAllAfterVersionId(Long univId, Long versionId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,18 @@
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

import java.util.Optional;

public interface RevInfoRepository extends JpaRepository<RevInfo,Long> {
List<RevInfo> findAllByUnivId(Long univId);
@Query("SELECT r FROM RevInfo r WHERE r.univId = :univId AND r.rev >= :versionId")
List<RevInfo> findAllByUnivIdAfterVersionId(Long univId, Long versionId);

@Modifying(clearAutomatically = true)
@Transactional
@Query("DELETE FROM RevInfo r WHERE r.univId = :univId AND r.rev > :versionId")
void deleteAllAfterVersionId(Long univId, Long versionId);

Optional<RevInfo> findFirstByUnivIdOrderByRevDesc(Long univId);

Optional<RevInfo> findFirstByUnivIdAndRevAfter(Long univId, Long rev);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.softeer5.uniro_backend.admin.repository;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.envers.AuditReader;
import org.hibernate.envers.AuditReaderFactory;
Expand All @@ -22,10 +25,18 @@ public class RouteAuditRepository {

public List<Route> getAllRoutesAtRevision(Long univId, Long versionId) {
AuditReader auditReader = AuditReaderFactory.get(entityManager);
return auditReader.createQuery()
.forEntitiesAtRevision(Route.class, versionId)
.add(AuditEntity.property("univId").eq(univId))
.getResultList();
List<Route> allRevisions = auditReader.createQuery()
.forRevisionsOfEntity(Route.class, true, true)
.add(AuditEntity.revisionNumber().le(versionId))
.add(AuditEntity.property("univId").eq(univId))
.addOrder(AuditEntity.revisionNumber().asc())
.getResultList();

Map<Long, Route> uniqueRoutesMap = new HashMap<>();
for (Route route : allRevisions) {
uniqueRoutesMap.put(route.getId(), route);
}
return new ArrayList<>(uniqueRoutesMap.values());
}

public void deleteAllAfterVersionId(Long univId, Long versionId) {
Expand All @@ -35,4 +46,19 @@ public void deleteAllAfterVersionId(Long univId, Long versionId) {
.executeUpdate();
}

public List<Route> findUpdatedRouteByUnivIdWithNodes(Long univId, Long versionId) {
AuditReader auditReader = AuditReaderFactory.get(entityManager);
List<Route> allRevisions = auditReader.createQuery()
.forRevisionsOfEntity(Route.class, true, true)
.add(AuditEntity.revisionNumber().gt(versionId))
.add(AuditEntity.property("univId").eq(univId))
.addOrder(AuditEntity.revisionNumber().asc())
.getResultList();

Map<Long, Route> uniqueRoutesMap = new HashMap<>();
for (Route route : allRevisions) {
uniqueRoutesMap.put(route.getId(), route);
}
return new ArrayList<>(uniqueRoutesMap.values());
}
}
Loading

0 comments on commit ecfa631

Please sign in to comment.