Skip to content

Commit

Permalink
Tht server 188 그날의 주제어 정보에 타입 데이터 추가 (#206)
Browse files Browse the repository at this point in the history
* fix : DailyFalling Type 데이터 컬럼 추가

* fix : test 수정

* fix : DailyFallingActiveInfo 테이블명 변경에 따른 클래스명 변경

* feat : 그날의 주제어에 타입 데이터 추가
  • Loading branch information
thalals authored May 3, 2024
1 parent 7c9b883 commit 0b31482
Show file tree
Hide file tree
Showing 19 changed files with 184 additions and 121 deletions.
35 changes: 35 additions & 0 deletions src/main/java/com/tht/api/app/entity/enums/DailyFallingType.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.tht.api.app.entity.enums;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.tht.api.exception.custom.EnumStateNotFoundException;
import lombok.AllArgsConstructor;

import java.util.Arrays;

@AllArgsConstructor
public enum DailyFallingType implements EnumModel{

ONE_CHOICE("oneChoice"),
TWO_CHOICE("twoChoice"),
FOUR_CHOICE("fourChoice");

private final String value;

@JsonCreator
public static DailyFallingType toConverter(final String name) {
return Arrays.stream(DailyFallingType.values())
.filter(dailyFallingType -> dailyFallingType.name().equals(name))
.findAny()
.orElseThrow(() -> EnumStateNotFoundException.ofDailyFallingType(name));
}

@Override
public String getKey() {
return name();
}

@Override
public String getValue() {
return value;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.tht.api.app.entity.enums.converter;

import com.tht.api.app.entity.enums.DailyFallingType;
import jakarta.persistence.AttributeConverter;

import java.util.Objects;

public class DailyFallingTypeConverter implements AttributeConverter<DailyFallingType, String> {

@Override
public String convertToDatabaseColumn(final DailyFallingType attribute) {
if (Objects.isNull(attribute)) {
throw new NullPointerException("Enum Converting String - DailyFallingType is null");
}

return attribute.name();
}

@Override
public DailyFallingType convertToEntityAttribute(final String dbData) {

return DailyFallingType.toConverter(dbData);
}
}
15 changes: 5 additions & 10 deletions src/main/java/com/tht/api/app/entity/meta/DailyFalling.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
package com.tht.api.app.entity.meta;

import com.tht.api.app.entity.Auditable;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand All @@ -15,20 +10,20 @@
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "daily_falling")
@Table
public class DailyFalling extends Auditable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idx;

@Column(name = "talk_keyword_idx")
@Column
private Integer talkKeywordIdx;

@Column(name = "active_time_table_idx")
@Column
private Integer activeTimeTableIdx;

@Column(name = "talk_issue")
@Column
private String talkIssue;

public static DailyFalling of(int talkKeywordIdx, int activeTimeTableIdx, String talkIssue) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.tht.api.app.entity.meta;

import com.tht.api.app.entity.Auditable;
import com.tht.api.app.entity.enums.DailyFallingType;
import com.tht.api.app.entity.enums.converter.DailyFallingTypeConverter;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Entity
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Table
public class DailyFallingActiveInfo extends Auditable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer idx;

@Column
private LocalDateTime startDateTime;

@Column
private LocalDateTime endDateTime;

@Column
@Convert(converter = DailyFallingTypeConverter.class)
private DailyFallingType type;

public static DailyFallingActiveInfo of(final LocalDateTime start,
final LocalDateTime end, final DailyFallingType type) {

return new DailyFallingActiveInfo(null, start, end, type);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.tht.api.app.facade.main;

import com.tht.api.app.entity.meta.DailyFallingActiveTimeTable;
import com.tht.api.app.entity.meta.DailyFallingActiveInfo;
import com.tht.api.app.entity.user.User;
import com.tht.api.app.facade.Facade;
import com.tht.api.app.facade.main.response.DailyFallingResponse;
Expand Down Expand Up @@ -30,7 +30,7 @@ public class DailyFallingFacade {

public DailyFallingResponse getDailyFallingList() {

final Optional<DailyFallingActiveTimeTable> activeInfo = dailyFallingActiveService.findActiveInfo();
final Optional<DailyFallingActiveInfo> activeInfo = dailyFallingActiveService.findActiveInfo();

if (activeInfo.isEmpty()) {
return DailyFallingResponse.empty();
Expand All @@ -42,7 +42,7 @@ public DailyFallingResponse getDailyFallingList() {
.map(DailyFallingTopicResponse::of)
.toList();

return DailyFallingResponse.of(activeInfo.get().getEndDateTime(), topicResponses);
return DailyFallingResponse.of(activeInfo.get().getEndDateTime(), activeInfo.get().getType(), topicResponses);
}

public void chooseDailyFallingKeyword(final long dailyFallingIdx, final String userUuid) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,29 @@
package com.tht.api.app.facade.main.response;

import com.tht.api.app.config.utils.UnixTimeUtils;
import com.tht.api.app.entity.enums.DailyFallingType;

import java.time.LocalDateTime;
import java.util.List;

public record DailyFallingResponse(
long expirationUnixTime,
List<DailyFallingTopicResponse> fallingTopicList
long expirationUnixTime,
String type,
List<DailyFallingTopicResponse> fallingTopicList
) {

public static DailyFallingResponse empty() {
return new DailyFallingResponse(-1, List.of());
String empty = "";
return new DailyFallingResponse(-1, empty, List.of());
}

public static DailyFallingResponse of(final LocalDateTime endDateTime,
final List<DailyFallingTopicResponse> topicResponses) {
public static DailyFallingResponse of(final LocalDateTime endDateTime, final DailyFallingType type,
final List<DailyFallingTopicResponse> topicResponses) {

return new DailyFallingResponse(UnixTimeUtils.convertUnixTimeForUTC(endDateTime),
topicResponses);
return new DailyFallingResponse(
UnixTimeUtils.convertUnixTimeForUTC(endDateTime),
type.getValue(),
topicResponses
);
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.tht.api.app.repository.meta;

import com.tht.api.app.entity.meta.DailyFallingActiveTimeTable;
import com.tht.api.app.entity.meta.DailyFallingActiveInfo;
import com.tht.api.app.repository.meta.querydsl.DailyFallingActiveTimeTableCustomRepository;
import org.springframework.data.jpa.repository.JpaRepository;

public interface DailyFallingActiveTimeTableRepository extends
JpaRepository<DailyFallingActiveTimeTable, Integer>,
JpaRepository<DailyFallingActiveInfo, Integer>,
DailyFallingActiveTimeTableCustomRepository {

DailyFallingActiveTimeTable findTopByOrderByEndDateTimeDesc();
DailyFallingActiveInfo findTopByOrderByEndDateTimeDesc();

}
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package com.tht.api.app.repository.meta.querydsl;

import com.tht.api.app.entity.meta.DailyFallingActiveTimeTable;
import com.tht.api.app.entity.meta.DailyFallingActiveInfo;

import java.util.Optional;

public interface DailyFallingActiveTimeTableCustomRepository {

Optional<DailyFallingActiveTimeTable> findByActiveNow();
Optional<DailyFallingActiveInfo> findByActiveNow();
}
Original file line number Diff line number Diff line change
@@ -1,29 +1,30 @@
package com.tht.api.app.repository.meta.querydsl;

import com.querydsl.jpa.impl.JPAQueryFactory;
import com.tht.api.app.entity.meta.DailyFallingActiveTimeTable;
import com.tht.api.app.entity.meta.QDailyFallingActiveTimeTable;
import com.tht.api.app.entity.meta.DailyFallingActiveInfo;
import java.time.LocalDateTime;
import java.util.Optional;

import com.tht.api.app.entity.meta.QDailyFallingActiveInfo;
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class DailyFallingActiveTimeTableCustomRepositoryImpl implements
DailyFallingActiveTimeTableCustomRepository {

private static final QDailyFallingActiveTimeTable dailyFallingActiveTimeTable = QDailyFallingActiveTimeTable.dailyFallingActiveTimeTable;
private static final QDailyFallingActiveInfo dailyFallingActiveInfo = QDailyFallingActiveInfo.dailyFallingActiveInfo;

private final JPAQueryFactory queryFactory;

@Override
public Optional<DailyFallingActiveTimeTable> findByActiveNow() {
public Optional<DailyFallingActiveInfo> findByActiveNow() {

final LocalDateTime now = LocalDateTime.now();

return Optional.ofNullable(
queryFactory.selectFrom(dailyFallingActiveTimeTable)
.where(dailyFallingActiveTimeTable.startDateTime.loe(now)
.and(dailyFallingActiveTimeTable.endDateTime.gt(now)))
queryFactory.selectFrom(dailyFallingActiveInfo)
.where(dailyFallingActiveInfo.startDateTime.loe(now)
.and(dailyFallingActiveInfo.endDateTime.gt(now)))
.fetchOne()
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,22 @@

import com.querydsl.jpa.impl.JPAQueryFactory;
import com.tht.api.app.entity.meta.QDailyFalling;
import com.tht.api.app.entity.meta.QDailyFallingActiveTimeTable;
import com.tht.api.app.entity.meta.QDailyFallingActiveInfo;
import com.tht.api.app.entity.meta.QTalkKeyword;
import com.tht.api.app.entity.meta.QTalkKeywordImg;
import com.tht.api.app.repository.mapper.DailyFallingMapper;
import com.tht.api.app.repository.mapper.QDailyFallingMapper;
import java.util.List;
import lombok.RequiredArgsConstructor;

import java.util.List;

@RequiredArgsConstructor
public class DailyFallingCustomRepositoryImpl implements DailyFallingCustomRepository {

private static final QDailyFalling dailyFalling = QDailyFalling.dailyFalling;
private static final QTalkKeyword talkKeyword = QTalkKeyword.talkKeyword;
private static final QTalkKeywordImg talkKeywordImg = QTalkKeywordImg.talkKeywordImg;
private static final QDailyFallingActiveTimeTable dailyFallingActiveTimeTable = QDailyFallingActiveTimeTable.dailyFallingActiveTimeTable;
private static final QDailyFallingActiveInfo dailyFallingActiveInfo = QDailyFallingActiveInfo.dailyFallingActiveInfo;

private final JPAQueryFactory queryFactory;

Expand All @@ -36,9 +37,9 @@ public List<DailyFallingMapper> findAllDailyFallingInfo(final Integer activeTabl
.on(dailyFalling.talkKeywordIdx.eq(talkKeyword.idx))
.innerJoin(talkKeywordImg)
.on(talkKeyword.talkKeywordImgIdx.eq(talkKeywordImg.idx))
.innerJoin(dailyFallingActiveTimeTable)
.on(dailyFalling.activeTimeTableIdx.eq(dailyFallingActiveTimeTable.idx))
.where(dailyFallingActiveTimeTable.idx.eq(activeTableIdx))
.innerJoin(dailyFallingActiveInfo)
.on(dailyFalling.activeTimeTableIdx.eq(dailyFallingActiveInfo.idx))
.where(dailyFallingActiveInfo.idx.eq(activeTableIdx))
.fetch();
}

Expand Down
Loading

0 comments on commit 0b31482

Please sign in to comment.