diff --git a/src/main/java/com/redhat/pctsec/model/ScanRequest.java b/src/main/java/com/redhat/pctsec/model/ScanRequest.java index 82765b8..fcd48fb 100644 --- a/src/main/java/com/redhat/pctsec/model/ScanRequest.java +++ b/src/main/java/com/redhat/pctsec/model/ScanRequest.java @@ -1,6 +1,7 @@ package com.redhat.pctsec.model; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; import com.redhat.pctsec.model.api.request.git; import com.redhat.pctsec.tekton.brewTaskRun; import com.redhat.pctsec.tekton.scmUrlPipelineRun; @@ -17,8 +18,6 @@ import java.util.UUID; @Entity public class ScanRequest { - - @Id @GeneratedValue protected UUID id; @@ -46,14 +45,21 @@ public class ScanRequest { @OneToOne(fetch=FetchType.EAGER, cascade = CascadeType.ALL) @JoinColumn(name = "brew_build_id", referencedColumnName = "id") + @JsonInclude(JsonInclude.Include.NON_NULL) public BrewBuild brewBuild; + @OneToOne(fetch=FetchType.EAGER, cascade = CascadeType.ALL) @JoinColumn(name = "pnc_build_id", referencedColumnName = "id") + @JsonInclude(JsonInclude.Include.NON_NULL) public PNCBuild pncBuild; + @OneToOne(fetch=FetchType.EAGER, cascade = CascadeType.ALL) @JoinColumn(name = "git_id", referencedColumnName = "id") + @JsonInclude(JsonInclude.Include.NON_NULL) public Git git; + @Column(name="scan_properties") + public String scanProperties; public ScanRequest() { } diff --git a/src/main/java/com/redhat/pctsec/model/jpa/ScanRequestRepository.java b/src/main/java/com/redhat/pctsec/model/jpa/ScanRequestRepository.java new file mode 100644 index 0000000..7e83c83 --- /dev/null +++ b/src/main/java/com/redhat/pctsec/model/jpa/ScanRequestRepository.java @@ -0,0 +1,18 @@ +package com.redhat.pctsec.model.jpa; + + +import com.redhat.pctsec.model.ScanRequest; +import io.quarkus.hibernate.orm.panache.PanacheRepositoryBase; +import io.smallrye.mutiny.Uni; +import jakarta.enterprise.context.ApplicationScoped; + +import java.util.UUID; + +@ApplicationScoped +public class ScanRequestRepository implements PanacheRepositoryBase { + public Uni findByProduct(String product) + { + return find("product", product).firstResult(); + } +} + diff --git a/src/main/java/com/redhat/pctsec/model/jpa/ScanRequestsRepository.java b/src/main/java/com/redhat/pctsec/model/jpa/ScanRequestsRepository.java index 3234845..2a9f936 100644 --- a/src/main/java/com/redhat/pctsec/model/jpa/ScanRequestsRepository.java +++ b/src/main/java/com/redhat/pctsec/model/jpa/ScanRequestsRepository.java @@ -1,4 +1,18 @@ package com.redhat.pctsec.model.jpa; -public class ScanRequestsRepository { +import com.redhat.pctsec.model.Scan; +import com.redhat.pctsec.model.ScanRequests; +import io.quarkus.hibernate.orm.panache.PanacheRepositoryBase; +import io.smallrye.mutiny.Uni; +import jakarta.enterprise.context.ApplicationScoped; + +import java.util.UUID; + +@ApplicationScoped +public class ScanRequestsRepository implements PanacheRepositoryBase { + public Uni findByProduct(String product) + { + return find("product", product).firstResult(); + } } + diff --git a/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanRequestResource.java b/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanRequestResource.java new file mode 100644 index 0000000..817f319 --- /dev/null +++ b/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanRequestResource.java @@ -0,0 +1,49 @@ +package com.redhat.pctsec.rest.v1alpha1; + +import com.redhat.pctsec.model.Scan; +import com.redhat.pctsec.model.ScanRequest; +import com.redhat.pctsec.model.ScanRequests; +import com.redhat.pctsec.model.jpa.ScanRequestRepository; +import com.redhat.pctsec.model.osh.paramMapper; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.ws.rs.*; +import org.eclipse.microprofile.config.inject.ConfigProperty; +import picocli.CommandLine; + +import java.util.UUID; +@ApplicationScoped +@Path("/api/v1a/ScanRequest/{id}") +public class ScanRequestResource { + @Inject + ScanRequestRepository sr; + + + @GET + @Produces({"application/json"}) + public ScanRequest getScanRequest(String id) + { + ScanRequest scanRequest = sr.findById(UUID.fromString(id)); + return scanRequest; + } + + @PATCH + @Path("ScanProperties/{scanProperties}") + @Consumes({"application/octet-stream"}) + @Produces({"application/json"}) + public ScanRequest patchScanRequest(String id, String scanProperties) + { + ScanRequest scanRequest = sr.findById(UUID.fromString(id)); + + try { + paramMapper pm = new paramMapper(scanProperties); + } catch(CommandLine.UnmatchedArgumentException e) + { + throw new BadRequestException("Invalid OSH Parameter"); + } + scanRequest.scanProperties = scanProperties; + sr.persist(scanRequest); + return scanRequest; + } + +} diff --git a/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanRequestsResource.java b/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanRequestsResource.java index 3ec99b0..cbd1d66 100644 --- a/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanRequestsResource.java +++ b/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanRequestsResource.java @@ -1,4 +1,33 @@ package com.redhat.pctsec.rest.v1alpha1; +import com.redhat.pctsec.model.Scan; +import com.redhat.pctsec.model.ScanRequest; +import com.redhat.pctsec.model.ScanRequests; +import com.redhat.pctsec.model.jpa.ScanRepository; +import com.redhat.pctsec.model.jpa.ScanRequestsRepository; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; + +import java.util.UUID; + +@ApplicationScoped +@Path("/api/v1a/ScanRequests") public class ScanRequestsResource { + + @Inject + ScanRequestsRepository sr; + + + @GET + @Path("{id}") + @Produces({"application/json"}) + public ScanRequests getScanRequests(String id) + { + ScanRequests scanRequests = sr.findById(UUID.fromString(id)); + return scanRequests; + } + }