Skip to content

Commit

Permalink
Merge pull request #8 from mcanoy/add-region
Browse files Browse the repository at this point in the history
add region. streamline db update
  • Loading branch information
mcanoy authored Jul 29, 2021
2 parents e059098 + 9c7d832 commit 11f0a2f
Show file tree
Hide file tree
Showing 10 changed files with 194 additions and 207 deletions.
35 changes: 26 additions & 9 deletions src/main/java/com/redhat/labs/lodestar/model/Artifact.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,7 @@
@EqualsAndHashCode(callSuper = true)
public class Artifact extends PanacheMongoEntityBase {

private static final String ENGAGEMENT_UUID = "engagementUuid";
private static final String MODIFIED = "modified";
private static final String UUID = "uuid";

@BsonId
@DiffIgnore
Expand All @@ -43,10 +41,9 @@ public class Artifact extends PanacheMongoEntityBase {
@DiffIgnore
private String created;
@DiffIgnore
@JsonbProperty(value = "last_modified")
@JsonbProperty(value = "updated")
private String modified;

@NotBlank
private String engagementUuid;
@NotBlank
private String title;
Expand All @@ -56,6 +53,8 @@ public class Artifact extends PanacheMongoEntityBase {
private String type;
@NotBlank
private String linkAddress;

private String region;

/**
* Returns an {@link ArtifactCount} containing the count for the total number of
Expand All @@ -75,7 +74,7 @@ public static ArtifactCount countAllArtifacts() {
* @return
*/
public static ArtifactCount countArtifactsByEngagementUuid(String engagementUuid) {
return ArtifactCount.builder().count(count(ENGAGEMENT_UUID, engagementUuid)).build();
return ArtifactCount.builder().count(count("engagementUuid", engagementUuid)).build();
}

/**
Expand All @@ -88,6 +87,14 @@ public static ArtifactCount countArtifactsByEngagementUuid(String engagementUuid
public static ArtifactCount countArtifactsByType(String type) {
return ArtifactCount.builder().count(count("type", type)).build();
}

public static ArtifactCount countArtifactsByRegion(List<String> regions) {
return ArtifactCount.builder().count(count("region in ?1", regions)).build();
}

public static ArtifactCount countArtifactsByRegionAndType(String type, List<String> regions) {
return ArtifactCount.builder().count(count("{ $and: [ {'type':?1}, {'region':{'$in':[?2]}} ] }", type, regions)).build();
}

/**
* Returns {@link List} of {@link Artifact}s sorted descending on modified
Expand All @@ -112,6 +119,16 @@ public static List<Artifact> pagedArtifacts(int page, int pageSize) {
public static List<Artifact> pagedArtifactsByType(String type, int page, int pageSize) {
return find("type", Sort.descending(MODIFIED), type).page(page, pageSize).list();
}

public static List<Artifact> pagedArtifactsByRegion(List<String> regions, int page, int pageSize) {
return find("region in ?1", Sort.descending(MODIFIED), regions).page(page, pageSize).list();
}

public static List<Artifact> pagedArtifactsByRegionAndType(String type, List<String> regions, int page, int pageSize) {
//not sure why the commented query doesn't work but keep seeing this error - no viable alternative at input 'type='
//return find("type = ?1 and region in ?2", Sort.descending(MODIFIED), type, regions).page(page, pageSize).list();
return find("{ $and: [ {'type':?1}, {'region':{'$in':[?2]}} ] }", Sort.descending(MODIFIED), type, regions).page(page, pageSize).list();
}

/**
* Returns a {@link List} of {@link Artifact}s for the given engagement uuid,
Expand All @@ -123,7 +140,7 @@ public static List<Artifact> pagedArtifactsByType(String type, int page, int pag
* @return
*/
public static List<Artifact> pagedArtifactsByEngagementUuid(String engagementUuid, int page, int pageSize) {
return find(ENGAGEMENT_UUID, Sort.descending(MODIFIED), engagementUuid).page(page, pageSize).list();
return find("engagementUuid", Sort.descending(MODIFIED), engagementUuid).page(page, pageSize).list();
}

/**
Expand All @@ -134,7 +151,7 @@ public static List<Artifact> pagedArtifactsByEngagementUuid(String engagementUui
* @return
*/
public static List<Artifact> findAllByEngagementUuid(String engagementUuid) {
return list(ENGAGEMENT_UUID, engagementUuid);
return list("engagementUuid", engagementUuid);
}

/**
Expand All @@ -145,7 +162,7 @@ public static List<Artifact> findAllByEngagementUuid(String engagementUuid) {
* @return
*/
public static Optional<Artifact> findByUuid(String uuid) {
return find(UUID, uuid).singleResultOptional();
return find("uuid", uuid).singleResultOptional();
}

/**
Expand All @@ -155,7 +172,7 @@ public static Optional<Artifact> findByUuid(String uuid) {
* @return
*/
public static long deleteByUuid(String uuid) {
return Artifact.delete(UUID, uuid);
return Artifact.delete("uuid", uuid);
}

/**
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/com/redhat/labs/lodestar/model/GetOptions.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.redhat.labs.lodestar.model;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import javax.ws.rs.QueryParam;
Expand All @@ -22,6 +24,11 @@ public class GetOptions {
@Parameter(name = "type", required = false, description = "return only artifacts for the given type. Do not use with engagementUuid")
@QueryParam("type")
private String type;

@Parameter(name = "region", required = false, description = "return only artifacts for the given region. Do not use with engagementUuid")
@QueryParam("region")

private List<String> region = new ArrayList<String>();

public Optional<String> getEngagementUuid() {
return Optional.ofNullable(engagementUuid);
Expand All @@ -30,5 +37,13 @@ public Optional<String> getEngagementUuid() {
public Optional<String> getType() {
return Optional.ofNullable(type);
}

public List<String> getRegion() {
if(region == null) {
region = new ArrayList<String>();
}

return region;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -35,33 +35,18 @@ public class ArtifactResource {

@Inject
ArtifactService service;

//may need to remove this and only accept by engagement uuid
@PUT
@APIResponses(value = {
@APIResponse(responseCode = "200", description = "The list of artifacts has been processed."),
@APIResponse(responseCode = "400", description = "Invalid list of artifacts provided.") })
@Operation(summary = "Artifacts have been processed and persisted.")
public Response processArtifacts(@Valid List<Artifact> artifacts,
@QueryParam("authorEmail") Optional<String> authorEmail,
@QueryParam("authorName") Optional<String> authorName) {

service.process(artifacts, authorEmail, authorName);
return Response.ok().build();

}

@PUT
@APIResponses(value = {
@APIResponse(responseCode = "200", description = "The list of artifacts has been processed."),
@APIResponse(responseCode = "400", description = "Invalid list of artifacts provided.") })
@Operation(summary = "Artifacts have been processed and persisted for engagement.")
@Path("/engagement/uuid/{engagementUuid}")
public Response processEngagementArtifacts(List<Artifact> artifacts, @PathParam(value="engagementUuid") String engagementUuid,
@QueryParam("authorEmail") Optional<String> authorEmail,
@Path("/engagement/uuid/{engagementUuid}/{region}")
public Response processEngagementArtifacts(@Valid List<Artifact> artifacts, @PathParam(value="engagementUuid") String engagementUuid,
@PathParam(value="region") String region, @QueryParam("authorEmail") Optional<String> authorEmail,
@QueryParam("authorName") Optional<String> authorName) {

service.updateArtifacts(engagementUuid, artifacts, authorEmail, authorName);
service.updateArtifacts(engagementUuid, region, artifacts, authorEmail, authorName);
return Response.ok().build();

}
Expand Down Expand Up @@ -98,9 +83,9 @@ public ArtifactCount countArtifacts(@BeanParam GetOptions options) {
public Response refresh() {

service.purge();
service.refresh();
long count = service.refresh();

return Response.accepted().build();
return Response.accepted().header("x-total-artifacts", count).build();

}

Expand Down
Loading

0 comments on commit 11f0a2f

Please sign in to comment.