Skip to content

Commit c6232de

Browse files
authored
fix/OPS-405 : 데이터 category 칼럼 null 허용 (#187)
1 parent db84ac2 commit c6232de

File tree

2 files changed

+41
-24
lines changed

2 files changed

+41
-24
lines changed

src/main/java/org/tuna/zoopzoop/backend/domain/archive/folder/service/FolderService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,10 @@ public FolderFilesDto getFilesInFolder(Archive archive, Integer folderId) {
127127
ds.getSummary(),
128128
ds.getSourceUrl(),
129129
ds.getImageUrl(),
130-
ds.getTags() == null ? List.of() : ds.getTags().stream().map(Tag::getTagName).toList(),
130+
ds.getTags() == null ? List.of() : ds.getTags().stream()
131+
.map(Tag::getTagName)
132+
.filter(java.util.Objects::nonNull)
133+
.toList(),
131134
ds.getCategory() == null ? null : ds.getCategory().name()
132135
))
133136
.toList();

src/main/java/org/tuna/zoopzoop/backend/domain/datasource/repository/DataSourceQRepositoryImpl.java

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.tuna.zoopzoop.backend.domain.datasource.entity.QDataSource;
2323
import org.tuna.zoopzoop.backend.domain.datasource.entity.QTag;
2424

25+
import java.time.LocalDate;
2526
import java.time.LocalDateTime;
2627
import java.util.ArrayList;
2728
import java.util.List;
@@ -115,23 +116,30 @@ public Page<DataSourceSearchItem> search(Integer memberId, DataSourceSearchCondi
115116
.where(ds.id.in(ids))
116117
.fetch()
117118
.stream()
119+
.filter(row -> row.get(tag.tagName) != null)
118120
.collect(Collectors.groupingBy(
119121
row -> row.get(ds.id),
120122
Collectors.mapping(row -> row.get(tag.tagName), Collectors.toList())
121123
));
122124

123125
List<DataSourceSearchItem> content = tuples.stream()
124-
.map(row -> new DataSourceSearchItem(
125-
row.get(ds.id),
126-
row.get(ds.title),
127-
row.get(ds.createDate).toLocalDate(),
128-
row.get(ds.summary),
129-
row.get(ds.source),
130-
row.get(ds.sourceUrl),
131-
row.get(ds.imageUrl),
132-
tagsById.getOrDefault(row.get(ds.id), List.of()),
133-
row.get(ds.category).name()
134-
))
126+
.map(row -> {
127+
Category cat = row.get(ds.category);
128+
String categoryCode = (cat != null ? cat.name() : null);
129+
LocalDateTime createdAt = row.get(ds.createDate);
130+
LocalDate createdDate = (createdAt != null ? createdAt.toLocalDate() : null);
131+
return new DataSourceSearchItem(
132+
row.get(ds.id),
133+
row.get(ds.title),
134+
createdDate,
135+
row.get(ds.summary),
136+
row.get(ds.source),
137+
row.get(ds.sourceUrl),
138+
row.get(ds.imageUrl),
139+
tagsById.getOrDefault(row.get(ds.id), List.of()),
140+
categoryCode
141+
);
142+
})
135143
.toList();
136144

137145
return new PageImpl<>(content, pageable, total);
@@ -230,24 +238,30 @@ public Page<DataSourceSearchItem> searchInArchive(Integer archiveId, DataSourceS
230238
.where(ds.id.in(tuples.stream().map(t -> t.get(ds.id)).toList()))
231239
.fetch()
232240
.stream()
241+
.filter(row -> row.get(tag.tagName) != null)
233242
.collect(Collectors.groupingBy(
234243
row -> row.get(ds.id),
235244
Collectors.mapping(row -> row.get(tag.tagName), Collectors.toList())
236245
));
237246

238247
List<DataSourceSearchItem> content = tuples.stream()
239-
.map(row -> new DataSourceSearchItem(
240-
row.get(ds.id),
241-
row.get(ds.title),
242-
// LocalDateTime(createDate) → LocalDate
243-
row.get(ds.createDate).toLocalDate(),
244-
row.get(ds.summary),
245-
row.get(ds.source),
246-
row.get(ds.sourceUrl),
247-
row.get(ds.imageUrl),
248-
tagsById.getOrDefault(row.get(ds.id), List.of()),
249-
row.get(ds.category).name() // 응답은 영문 코드 유지
250-
))
248+
.map(row -> {
249+
Category category = row.get(ds.category);
250+
String categoryCode = (category != null ? category.name() : null); // null 허용
251+
LocalDateTime createdAt = row.get(ds.createDate);
252+
LocalDate createdDate = (createdAt != null ? createdAt.toLocalDate() : null);
253+
return new DataSourceSearchItem(
254+
row.get(ds.id),
255+
row.get(ds.title),
256+
createdDate,
257+
row.get(ds.summary),
258+
row.get(ds.source),
259+
row.get(ds.sourceUrl),
260+
row.get(ds.imageUrl),
261+
tagsById.getOrDefault(row.get(ds.id), List.of()),
262+
categoryCode
263+
);
264+
})
251265
.toList();
252266

253267
return new PageImpl<>(content, pageable, total);

0 commit comments

Comments
 (0)