Skip to content

Commit

Permalink
Fix a bug in swh-inserter where existing file metadata is over-writ…
Browse files Browse the repository at this point in the history
…ten with file hash.
  • Loading branch information
mir-am committed Sep 29, 2022
1 parent dce05cd commit 4b81262
Showing 1 changed file with 11 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,17 @@ public List<String> getFilePaths4PkgVersion(Long pkgVersionID) {

public String addFileHash(Long pkgVersionID, String filePath, String fileHash) {
try {
var fileMetadata = JSONB.valueOf(String.valueOf(new JSONObject().put("swh_checksum", fileHash)));
return context.update(Files.FILES).set(Files.FILES.METADATA, fileMetadata)
final var fileHashFieldName = "swh_checksum";
final var currentMetadata = context.select(Files.FILES.METADATA).from(Files.FILES)
.where(Files.FILES.PACKAGE_VERSION_ID.eq(pkgVersionID)
.and(Files.FILES.PATH.eq(filePath))).fetchOne().getValue(Files.FILES.METADATA);

// Updates the existing metadata field with file hash to avoid overriding it
var fileMetadata = currentMetadata == null
? new JSONObject().put(fileHashFieldName, fileHash)
: new JSONObject(currentMetadata.data()).put(fileHashFieldName, fileHash);

return context.update(Files.FILES).set(Files.FILES.METADATA, JSONB.valueOf(String.valueOf(fileMetadata)))
.where(Files.FILES.PACKAGE_VERSION_ID.eq(pkgVersionID).and(Files.FILES.PATH.eq(filePath)))
.returningResult(Files.FILES.PATH).fetchOne().getValue(Files.FILES.PATH);
} catch (DataAccessException e) {
Expand Down

0 comments on commit 4b81262

Please sign in to comment.