use of org.folio.support.ModuleConstants.REQUEST_TABLE in project mod-circulation-storage by folio-org.
the class ExpirationTool method resetPositionsForOpenRequestsByIdemIds.
private static Future<RowSet<Row>> resetPositionsForOpenRequestsByIdemIds(AsyncResult<SQLConnection> conn, Vertx vertx, String tenant, Set<String> itemIds) {
if (itemIds.isEmpty()) {
succeededFuture();
}
Set<String> quotedItemIds = itemIds.stream().map(id -> format("'%s'", id)).collect(toSet());
String fullTableName = format("%s.%s", PostgresClient.convertToPsqlStandard(tenant), REQUEST_TABLE);
String sql = format("UPDATE %1$s SET jsonb = jsonb - 'position' WHERE " + "(jsonb->>'status' = '%2$s' OR " + "jsonb->>'status' = '%3$s' OR " + "jsonb->>'status' = '%4$s' OR " + "jsonb->>'status' = '%5$s') AND " + "jsonb->>'itemId' IN (%6$s)", fullTableName, OPEN_NOT_YET_FILLED.value(), OPEN_AWAITING_PICKUP.value(), OPEN_AWAITING_DELIVERY.value(), OPEN_IN_TRANSIT.value(), String.join(",", quotedItemIds));
Promise<RowSet<Row>> promise = Promise.promise();
PostgresClient pgClient = PostgresClient.getInstance(vertx, tenant);
pgClient.execute(conn, sql, promise);
return promise.future().map(ur -> null);
}
use of org.folio.support.ModuleConstants.REQUEST_TABLE in project mod-circulation-storage by folio-org.
the class ExpirationTool method getExpiredRequests.
private static Future<List<Request>> getExpiredRequests(AsyncResult<SQLConnection> conn, Vertx vertx, String tenant) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
df.setTimeZone(TimeZone.getTimeZone(ZoneOffset.UTC));
PostgresClient pgClient = PostgresClient.getInstance(vertx, tenant);
Promise<RowSet<Row>> promise = Promise.promise();
String where = format("WHERE " + "(jsonb->>'status' = '%1$s' AND jsonb->>'requestExpirationDate' < '%5$s') OR " + "(jsonb->>'status' = '%2$s' AND jsonb->>'requestExpirationDate' < '%5$s') OR " + "(jsonb->>'status' = '%3$s' AND jsonb->>'requestExpirationDate' < '%5$s') OR " + "(jsonb->>'status' = '%4$s' AND jsonb->>'holdShelfExpirationDate' < '%5$s') " + "LIMIT 150", OPEN_NOT_YET_FILLED.value(), OPEN_AWAITING_DELIVERY.value(), OPEN_IN_TRANSIT.value(), OPEN_AWAITING_PICKUP.value(), df.format(new Date()));
String fullTableName = format("%s.%s", PostgresClient.convertToPsqlStandard(tenant), REQUEST_TABLE);
String query = format("SELECT jsonb FROM %s %s", fullTableName, where);
pgClient.select(conn, query, promise);
return promise.future().map(rs -> rowSetToStream(rs).map(row -> row.get(JsonObject.class, row.getColumnIndex(JSONB_COLUMN))).map(json -> json.mapTo(Request.class)).collect(toList()));
}
use of org.folio.support.ModuleConstants.REQUEST_TABLE in project mod-circulation-storage by folio-org.
the class ExpirationTool method getOpenRequestsByItemIds.
private static Future<List<Request>> getOpenRequestsByItemIds(AsyncResult<SQLConnection> conn, Vertx vertx, String tenant, Set<String> itemIds) {
PostgresClient pgClient = PostgresClient.getInstance(vertx, tenant);
Promise<RowSet<Row>> promise = Promise.promise();
if (itemIds.isEmpty()) {
return succeededFuture(emptyList());
}
Set<String> quotedItemIds = itemIds.stream().map(id -> format("'%s'", id)).collect(toSet());
String where = format("WHERE " + "(jsonb->>'status' = '%1$s' OR " + "jsonb->>'status' = '%2$s' OR " + "jsonb->>'status' = '%3$s' OR " + "jsonb->>'status' = '%4$s') AND " + "jsonb->>'itemId' IN (%5$s) " + "ORDER BY jsonb->>'position' ASC", OPEN_NOT_YET_FILLED.value(), OPEN_AWAITING_PICKUP.value(), OPEN_AWAITING_DELIVERY.value(), OPEN_IN_TRANSIT.value(), String.join(",", quotedItemIds));
String fullTableName = format("%s.%s", PostgresClient.convertToPsqlStandard(tenant), REQUEST_TABLE);
String sql = format("SELECT jsonb FROM %s %s", fullTableName, where);
pgClient.select(conn, sql, promise);
return promise.future().map(rs -> rowSetToStream(rs).map(row -> row.get(JsonObject.class, row.getColumnIndex(JSONB_COLUMN))).map(json -> json.mapTo(Request.class)).collect(toList()));
}
Aggregations