Skip to content

Commit 3befe6f

Browse files
committed
rework realization of connection between models
1 parent 540b436 commit 3befe6f

File tree

8 files changed

+32
-28
lines changed

8 files changed

+32
-28
lines changed

app/src/main/java/hexlet/code/controller/UrlChecksController.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ public static void create(Context ctx) throws SQLException {
1818
var status = Unirest.get(url.getName())
1919
.asString()
2020
.getStatus();
21-
2221
var check = new UrlCheck(status, urlId);
23-
url.addCheck(check);
2422

2523
UrlCheckRepository.save(check);
2624
ctx.redirect(NamedRoutes.urlPath(urlId));

app/src/main/java/hexlet/code/controller/UrlsController.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import hexlet.code.dto.urls.UrlPage;
44
import hexlet.code.dto.urls.UrlsPage;
55
import hexlet.code.model.Url;
6+
import hexlet.code.model.UrlCheck;
7+
import hexlet.code.repository.UrlCheckRepository;
68
import hexlet.code.repository.UrlRepository;
79
import hexlet.code.util.NamedRoutes;
810
import io.javalin.http.Context;
@@ -12,14 +14,21 @@
1214
import java.net.URI;
1315
import java.net.URISyntaxException;
1416
import java.sql.SQLException;
17+
import java.util.HashMap;
1518

1619
import static io.javalin.rendering.template.TemplateUtil.model;
1720

1821
public class UrlsController {
1922

2023
public static void index(Context ctx) throws SQLException {
2124
var urls = UrlRepository.getEntities();
22-
var page = new UrlsPage(urls);
25+
var latestChecks = new HashMap<Long, UrlCheck>();
26+
27+
for (var check : UrlCheckRepository.getEntities()) {
28+
latestChecks.put(check.getUrlId(), check);
29+
}
30+
31+
var page = new UrlsPage(urls, latestChecks);
2332
page.setFlash(ctx.consumeSessionAttribute("flash"));
2433
page.setFlashType(ctx.consumeSessionAttribute("flash-type"));
2534
ctx.render("urls/index.jte", model("page", page));
@@ -28,7 +37,11 @@ public static void index(Context ctx) throws SQLException {
2837
public static void show(Context ctx) throws SQLException {
2938
var id = ctx.pathParamAsClass("id", Long.class).get();
3039
var url = UrlRepository.find(id).orElseThrow(NotFoundResponse::new);
31-
var page = new UrlPage(url);
40+
var checks = UrlCheckRepository.getEntities().stream()
41+
.filter(check -> check.getUrlId().equals(id))
42+
.toList();
43+
44+
var page = new UrlPage(url, checks);
3245
ctx.render("urls/show.jte", model("page", page));
3346
}
3447

app/src/main/java/hexlet/code/dto/urls/UrlPage.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@
22

33
import hexlet.code.dto.BasePage;
44
import hexlet.code.model.Url;
5+
import hexlet.code.model.UrlCheck;
56
import lombok.AllArgsConstructor;
67
import lombok.Getter;
8+
import lombok.Setter;
9+
10+
import java.util.List;
711

812
@Getter
13+
@Setter
914
@AllArgsConstructor
1015
public class UrlPage extends BasePage {
1116
private Url url;
17+
private List<UrlCheck> checks;
1218
}

app/src/main/java/hexlet/code/dto/urls/UrlsPage.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22

33
import hexlet.code.dto.BasePage;
44
import hexlet.code.model.Url;
5+
import hexlet.code.model.UrlCheck;
56
import lombok.AllArgsConstructor;
67
import lombok.Getter;
78

89
import java.util.List;
10+
import java.util.Map;
911

1012
@Getter
1113
@AllArgsConstructor
1214
public class UrlsPage extends BasePage {
1315
private List<Url> urls;
16+
private Map<Long, UrlCheck> latestChecks;
1417
}

app/src/main/java/hexlet/code/model/Url.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
import lombok.Setter;
55

66
import java.sql.Timestamp;
7-
import java.util.ArrayList;
8-
import java.util.List;
97

108
@Getter
119
@Setter
@@ -14,8 +12,6 @@ public class Url {
1412
private String name;
1513
private Timestamp createdAt;
1614

17-
private List<UrlCheck> checks;
18-
1915
public Url(String name) {
2016
this.name = name;
2117
this.createdAt = new Timestamp(System.currentTimeMillis());
@@ -26,14 +22,4 @@ public Url(Long id, String name, Timestamp createdAt) {
2622
this.name = name;
2723
this.createdAt = createdAt;
2824
}
29-
30-
public void addCheck(UrlCheck check) {
31-
32-
if (checks == null) {
33-
checks = new ArrayList<>();
34-
}
35-
36-
check.setUrl(this);
37-
checks.add(check);
38-
}
3925
}

app/src/main/java/hexlet/code/repository/UrlCheckRepository.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,21 +52,19 @@ public static Optional<UrlCheck> find(Long id) throws SQLException {
5252
}
5353
}
5454

55-
public static List<UrlCheck> getChecksByUrlId(Long urlId) throws SQLException {
56-
var sql = "SELECT * FROM url_checks WHERE url_id = ?";
55+
public static List<UrlCheck> getEntities() throws SQLException {
56+
var sql = "SELECT * FROM url_checks";
5757
try (
5858
var conn = dataSource.getConnection();
5959
var stmt = conn.prepareStatement(sql)
6060
) {
61-
stmt.setLong(1, urlId);
62-
6361
var rs = stmt.executeQuery();
6462
var result = new ArrayList<UrlCheck>();
6563
while (rs.next()) {
6664
var check = UrlCheck.builder()
6765
.id(rs.getLong("id"))
6866
.statusCode(rs.getInt("status_code"))
69-
.urlId(urlId)
67+
.urlId(rs.getLong("url_id"))
7068
.createdAt(rs.getTimestamp("created_at"))
7169
.build();
7270
result.add(check);

app/src/main/resources/templates/urls/index.jte

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ content = @`
2424
<tr>
2525
<td>${url.getId()}</td>
2626
<td><a href="${NamedRoutes.urlPath(url.getId())}">${url.getName()}</a></td>
27-
@if (url.getChecks() != null)
28-
<td>${String.valueOf(url.getChecks().getLast().getCreatedAt())}</td>
29-
<td>${url.getChecks().getLast().getStatusCode()}</td>
27+
@if (page.getLatestChecks() != null && page.getLatestChecks().containsKey(url.getId()))
28+
<td>${String.valueOf(page.getLatestChecks().get(url.getId()).getCreatedAt())}</td>
29+
<td>${page.getLatestChecks().get(url.getId()).getStatusCode()}</td>
3030
@endif
3131
</tr>
3232
@endfor

app/src/main/resources/templates/urls/show.jte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ content = @`
2626
<form action="${NamedRoutes.urlChecksPath(page.getUrl().getId())}" method="post">
2727
<input type="submit" value="Запустить проверку">
2828
</form>
29-
@if (page.getUrl().getChecks() != null)
29+
@if (page.getChecks() != null)
3030
<table>
3131
<thead>
3232
<tr>
@@ -36,7 +36,7 @@ content = @`
3636
</tr>
3737
</thead>
3838
<tbody>
39-
@for (var check : page.getUrl().getChecks())
39+
@for (var check : page.getChecks())
4040
<tr>
4141
<th>${check.getId()}</th>
4242
<th>${check.getStatusCode()}</th>

0 commit comments

Comments
 (0)