Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DB Connection #18

Merged
merged 4 commits into from
Jun 13, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
impl(api-server): db
Create the enhanced set of unit and integration tests for the database
  • Loading branch information
CatOrLeader committed Jun 13, 2024
commit 9f48412628393eb0265e60158b7fdacbff1752b0
8 changes: 6 additions & 2 deletions db/migrations/init/report-table-init.sql
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ CREATE TABLE IF NOT EXISTS report(
placement varchar(128) NOT NULL,
failure_date TIMESTAMP WITH TIME ZONE,
proceeded_date TIMESTAMP WITH TIME ZONE,
is_confirmed BOOLEAN NOT NULL,
is_resolved BOOLEAN NOT NULL
owner_email varchar(128),
is_confirmed_by_analysis BOOLEAN NOT NULL,
is_confirmed_by_admin BOOLEAN NOT NULL,
is_resolved_by_user BOOLEAN NOT NULL,
is_resolved_by_admin BOOLEAN NOT NULL,
description varchar(256)
);
-- rollback DROP TABLE IF EXISTS report;
54 changes: 52 additions & 2 deletions src/main/java/com/java/api/AdminPanelAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
Expand Down Expand Up @@ -43,7 +44,56 @@ public interface AdminPanelAPI {
@GetMapping(
headers = "Authorization"
)
ResponseEntity<Object> confirmReport(@RequestParam(value = "report_id") long reportId);
ResponseEntity<Void> confirmReport(@RequestParam(value = "report_id") long reportId);

@Operation(summary = "Resolve report with certain id")
@ApiResponses(value = {
@ApiResponse(responseCode = "200",
description = "Report successfully resolved",
content = @Content()
),

@ApiResponse(responseCode = "400",
description = "Request was malformed",
content = @Content()),

@ApiResponse(responseCode = "403",
description = "Incorrect access token provided",
content = @Content()),

@ApiResponse(responseCode = "404",
description = "The entity is not found",
content = @Content())
})
@GetMapping(
path = "/resolve",
headers = "Authorization"
)
ResponseEntity<Void> resolveReportForcefully(@RequestParam(value = "report_id") long reportId);

@Operation(summary = "Resolve report with certain id")
@ApiResponses(value = {
@ApiResponse(responseCode = "200",
description = "Report successfully resolved",
content = @Content()
),

@ApiResponse(responseCode = "400",
description = "Request was malformed",
content = @Content()),

@ApiResponse(responseCode = "403",
description = "Incorrect access token provided",
content = @Content())
})
@GetMapping(
path = "/resolveByMeta",
headers = "Authorization"
)
ResponseEntity<Void> resolveReportForcefullyByMeta(
@RequestParam @NotBlank String placement,
@RequestParam @NotBlank String category
);

@Operation(summary = "Create confirmed report instantly")
@ApiResponses(value = {
Expand Down Expand Up @@ -89,5 +139,5 @@ public interface AdminPanelAPI {
@DeleteMapping(
headers = "Authorization"
)
ResponseEntity<Object> deleteReport(@RequestParam(value = "report_id") long reportId);
ResponseEntity<Void> deleteReport(@RequestParam(value = "report_id") long reportId);
}
15 changes: 13 additions & 2 deletions src/main/java/com/java/api/AdminPanelController.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,19 @@
@RestController
@Log4j2
public class AdminPanelController implements AdminPanelAPI {

@Override
public ResponseEntity<Void> confirmReport(long reportId) {
return null;
}

@Override
public ResponseEntity<Void> resolveReportForcefully(long reportId) {
return null;
}

@Override
public ResponseEntity<Object> confirmReport(long reportId) {
public ResponseEntity<Void> resolveReportForcefullyByMeta(String placement, String category) {
return null;
}

Expand All @@ -22,7 +33,7 @@ public ResponseEntity<PostProcessReportResponse> createReport(PostProcessReportR
}

@Override
public ResponseEntity<Object> deleteReport(long reportId) {
public ResponseEntity<Void> deleteReport(long reportId) {
return null;
}
}
Expand Down
51 changes: 50 additions & 1 deletion src/main/java/com/java/api/ReportAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
Expand Down Expand Up @@ -135,11 +136,34 @@ ResponseEntity<GetReportListResponse> getReportsByDateWindow(
description = "Incorrect access token provided",
content = @Content())
})

@GetMapping(
path = "/allByCategory",
headers = "Authorization"
)
ResponseEntity<GetReportListResponse> getReportsByCategory(@RequestBody @NotBlank String category);
ResponseEntity<GetReportListResponse> getReportsByCategory(@RequestParam @NotBlank String category);

@Operation(summary = "Get all the reports by the owner email")
@ApiResponses(value = {
@ApiResponse(responseCode = "200",
description = "Reports successfully returned",
content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
schema = @Schema(implementation = GetReportListResponse.class))
),

@ApiResponse(responseCode = "400",
description = "Request was malformed",
content = @Content()),

@ApiResponse(responseCode = "403",
description = "Incorrect access token provided",
content = @Content())
})
@GetMapping(
path = "/allByEmail",
headers = "Authorization"
)
ResponseEntity<GetReportListResponse> getReportsByEmail(@RequestParam @NotBlank String ownerEmail);

@Operation(summary = "Process report from the user")
@ApiResponses(value = {
Expand All @@ -162,4 +186,29 @@ ResponseEntity<GetReportListResponse> getReportsByDateWindow(
headers = "Authorization"
)
ResponseEntity<PostProcessReportResponse> processReport(@RequestBody @NotNull PostProcessReportRequest request);

@Operation(summary = "Resolve report from the user")
@ApiResponses(value = {
@ApiResponse(responseCode = "200",
description = "Report resolved successfully",
content = @Content()
),

@ApiResponse(responseCode = "400",
description = "Request was malformed",
content = @Content()),

@ApiResponse(responseCode = "403",
description = "Incorrect access token provided",
content = @Content()),

@ApiResponse(responseCode = "404",
description = "The entity is not found",
content = @Content())
})
@PatchMapping(
consumes = MediaType.APPLICATION_JSON_VALUE,
headers = "Authorization"
)
ResponseEntity<Void> resolveReport(@RequestParam(value = "report_id") @Min(0) long reportId);
}
10 changes: 10 additions & 0 deletions src/main/java/com/java/api/ReportController.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,18 @@ public ResponseEntity<GetReportListResponse> getReportsByCategory(String categor
return null;
}

@Override
public ResponseEntity<GetReportListResponse> getReportsByEmail(String ownerEmail) {
return null;
}

@Override
public ResponseEntity<PostProcessReportResponse> processReport(PostProcessReportRequest request) {
return null;
}

@Override
public ResponseEntity<Void> resolveReport(long reportId) {
return null;
}
}
6 changes: 5 additions & 1 deletion src/main/java/com/java/api/model/GetReportResponse.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@ public record GetReportResponse(
@Min(0) long id,
@NotBlank String category,
@NotBlank String placement,
String ownerEmail,
@NotNull OffsetDateTime failureDate,
@NotNull OffsetDateTime lastSuccessfullyProceededDate,
boolean isResolved
boolean isResolved,
boolean isConfirmed,
String description
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
public record PostProcessReportRequest(
@NotBlank String category,
@NotBlank String placement,
@NotNull OffsetDateTime dateTime
@NotNull OffsetDateTime dateTime,
String ownerEmail,
String description
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.java.configuration;

import com.java.domain.repository.ReportRepository;
import com.java.domain.service.ReportService;
import com.java.domain.service.jpa.JpaReportService;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@RequiredArgsConstructor
public class JpaDatabaseAccessConfiguration {
@Bean
public ReportService reportService(@NotNull ReportRepository reportRepository) {
return new JpaReportService(reportRepository);
}
}
30 changes: 23 additions & 7 deletions src/main/java/com/java/domain/model/Report.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import java.time.OffsetDateTime;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
Expand All @@ -18,6 +19,7 @@
@NoArgsConstructor
@Getter
@Setter
@EqualsAndHashCode(of = {"id", "category", "placement"})
public class Report {
@Id
@Column(nullable = false)
Expand All @@ -36,25 +38,39 @@ public class Report {
@Convert(converter = DateTimeConverter.class)
private OffsetDateTime proceededDate;

private String ownerEmail;

@Column(nullable = false)
private boolean isConfirmedByAnalysis;

@Column(nullable = false)
private boolean isConfirmedByAdmin;

@Column(nullable = false)
private boolean isConfirmed;
private boolean isResolvedByUser;

@Column(nullable = false)
private boolean isResolved;
private boolean isResolvedByAdmin;

public Report(
@SuppressWarnings("checkstyle:ParameterNumber") public Report(
String category,
String placement,
OffsetDateTime failureDate,
String ownerEmail,
OffsetDateTime proceededDate,
boolean isConfirmed,
boolean isResolved
boolean isConfirmedByAnalysis,
boolean isConfirmedByAdmin,
boolean isResolvedByUser,
boolean isResolvedByAdmin
) {
this.category = category;
this.placement = placement;
this.failureDate = failureDate;
this.ownerEmail = ownerEmail;
this.proceededDate = proceededDate;
this.isConfirmed = isConfirmed;
this.isResolved = isResolved;
this.isConfirmedByAnalysis = isConfirmedByAnalysis;
this.isConfirmedByAdmin = isConfirmedByAdmin;
this.isResolvedByUser = isResolvedByUser;
this.isResolvedByAdmin = isResolvedByAdmin;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,14 @@ public interface ReportRepository extends JpaRepository<Report, Long> {

Optional<List<Report>> findAllByCategory(@NotBlank String category);

Optional<List<Report>> findAllByProceededDateBeforeAndProceededDateAfter(
Optional<List<Report>> findAllByFailureDateAfterAndFailureDateBefore(
@NotNull OffsetDateTime startWindow,
@NotNull OffsetDateTime endWindow
);

Optional<List<Report>> findAllByFailureDateAfter(@NotNull OffsetDateTime startWindow);

Optional<List<Report>> findAllByFailureDateBefore(@NotNull OffsetDateTime endWindow);

Optional<List<Report>> findAllByOwnerEmail(@NotBlank String email);
}
10 changes: 9 additions & 1 deletion src/main/java/com/java/domain/service/ReportService.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,17 @@ public interface ReportService {

@NotNull Optional<List<Report>> getAllReportsByDateWindows(OffsetDateTime startWindow, OffsetDateTime endWindow);

@NotNull Optional<List<Report>> getAllReportsByOwnerEmail(@NotBlank String ownerEmail);

@NotNull Optional<PostProcessReportResponse> processReport(@NotNull PostProcessReportRequest request);

boolean confirmReport(@Min(0) long id);
boolean confirmReportByAnalysis(@Min(0) long id);

boolean confirmReportByAdmin(@Min(0) long id);

boolean resolveReportByUser(@Min(0) long id);

boolean resolveReportByAdmin(@Min(0) long id);

@NotNull Optional<PostProcessReportResponse> processReportForcefully(@NotNull PostProcessReportRequest request);

Expand Down
Loading