Skip to content

Commit bce8eb8

Browse files
committed
refactor(SeriesParsedDataDto): modify to support multiple image URLs
Part of #698
1 parent 1601ce1 commit bce8eb8

File tree

5 files changed

+36
-8
lines changed

5 files changed

+36
-8
lines changed

src/main/java/ru/mystamps/web/feature/series/importing/JdbcSeriesImportDao.java

+15-1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public class JdbcSeriesImportDao implements SeriesImportDao {
4848
private final String addParsedDataSql;
4949
private final String addParsedImageUrlSql;
5050
private final String findParsedDataSql;
51+
private final String findParsedImageUrlsSql;
5152
private final String findRequestInfoSql;
5253
private final String findAllSql;
5354

@@ -63,6 +64,7 @@ public JdbcSeriesImportDao(Environment env, NamedParameterJdbcTemplate jdbcTempl
6364
this.addParsedDataSql = env.getRequiredProperty("series_import_requests.add_series_parsed_data");
6465
this.addParsedImageUrlSql = env.getRequiredProperty("series_import_requests.add_series_parsed_image_url");
6566
this.findParsedDataSql = env.getRequiredProperty("series_import_requests.find_series_parsed_data_by_request_id");
67+
this.findParsedImageUrlsSql = env.getRequiredProperty("series_import_requests.find_series_parsed_image_urls_by_request_id");
6668
this.findRequestInfoSql = env.getRequiredProperty("series_import_requests.find_request_info_by_series_id");
6769
this.findAllSql = env.getRequiredProperty("series_import_requests.find_all");
6870
}
@@ -252,11 +254,23 @@ public SeriesParsedDataDto findParsedDataByRequestId(Integer requestId, String l
252254
params.put("request_id", requestId);
253255
params.put("lang", lang);
254256

255-
return jdbcTemplate.queryForObject(
257+
SeriesParsedDataDto parsedData = jdbcTemplate.queryForObject(
256258
findParsedDataSql,
257259
params,
258260
RowMappers::forSeriesParsedDataDto
259261
);
262+
if (parsedData == null) {
263+
return null;
264+
}
265+
266+
List<String> imageUrls = jdbcTemplate.queryForList(
267+
findParsedImageUrlsSql,
268+
Collections.singletonMap("request_id", requestId),
269+
String.class
270+
);
271+
parsedData.setImageUrls(imageUrls);
272+
273+
return parsedData;
260274

261275
} catch (EmptyResultDataAccessException ignored) {
262276
return null;

src/main/java/ru/mystamps/web/feature/series/importing/RowMappers.java

-2
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ private RowMappers() {
5757
"country_name"
5858
);
5959

60-
String imageUrl = rs.getString("image_url");
6160
Integer releaseDay = JdbcUtils.getInteger(rs, "release_day");
6261
Integer releaseMonth = JdbcUtils.getInteger(rs, "release_month");
6362
Integer releaseYear = JdbcUtils.getInteger(rs, "release_year");
@@ -68,7 +67,6 @@ private RowMappers() {
6867
return new SeriesParsedDataDto(
6968
category,
7069
country,
71-
imageUrl,
7270
releaseDay,
7371
releaseMonth,
7472
releaseYear,

src/main/java/ru/mystamps/web/feature/series/importing/SeriesParsedDataDto.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,29 @@
1919

2020
import lombok.Getter;
2121
import lombok.RequiredArgsConstructor;
22+
import lombok.Setter;
2223
import ru.mystamps.web.common.LinkEntityDto;
2324

25+
import java.util.List;
26+
2427
@Getter
2528
@RequiredArgsConstructor
2629
public class SeriesParsedDataDto {
2730
private final LinkEntityDto category;
2831
private final LinkEntityDto country;
29-
private final String imageUrl;
3032
private final Integer issueDay;
3133
private final Integer issueMonth;
3234
private final Integer issueYear;
3335
private final Integer quantity;
3436
private final Boolean perforated;
3537
private final String michelNumbers;
38+
39+
@Setter
40+
private List<String> imageUrls;
41+
42+
// for backward compatibility
43+
public String getImageUrl() {
44+
return imageUrls == null || imageUrls.isEmpty() ? null : imageUrls.get(0);
45+
}
46+
3647
}

src/main/resources/sql/series_import_request_dao_queries.properties

+6-2
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,7 @@ INSERT \
115115
VALUES (:request_id, :url)
116116

117117
series_import_requests.find_series_parsed_data_by_request_id = \
118-
SELECT (SELECT pu.url FROM series_import_parsed_image_urls pu WHERE pu.request_id = :request_id LIMIT 1) AS image_url \
119-
, cat.id AS category_id \
118+
SELECT cat.id AS category_id \
120119
, cat.slug AS category_slug \
121120
, CASE WHEN 'ru' = :lang THEN COALESCE(cat.name_ru, cat.name) ELSE cat.name END AS category_name \
122121
, count.id AS country_id \
@@ -135,6 +134,11 @@ LEFT JOIN countries count \
135134
ON count.id = pd.country_id \
136135
WHERE pd.request_id = :request_id
137136

137+
series_import_requests.find_series_parsed_image_urls_by_request_id = \
138+
SELECT url \
139+
FROM series_import_parsed_image_urls \
140+
WHERE request_id = :request_id
141+
138142
series_import_requests.find_request_info_by_series_id = \
139143
SELECT id \
140144
, url \

src/test/java/ru/mystamps/web/service/TestObjects.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -263,17 +263,18 @@ public static SeriesParsedDataDto createSeriesParsedDataDto() {
263263
month = Random.monthOfYear();
264264
}
265265

266-
return new SeriesParsedDataDto(
266+
SeriesParsedDataDto dto = new SeriesParsedDataDto(
267267
new LinkEntityDto(Random.id(), categorySlug, categoryName),
268268
new LinkEntityDto(Random.id(), countrySlug, countryName),
269-
Random.url(),
270269
day,
271270
month,
272271
Random.issueYear(),
273272
Random.quantity(),
274273
Random.perforated(),
275274
String.join(",", Random.michelNumbers())
276275
);
276+
dto.setImageUrls(Collections.singletonList(Random.url()));
277+
return dto;
277278
}
278279

279280
public static RawParsedDataDto createRawParsedDataDto() {

0 commit comments

Comments
 (0)