From ae08bc0b8efc41c7f60c90efa849e1314161a64c Mon Sep 17 00:00:00 2001 From: celinemadi-alc Date: Mon, 15 Sep 2025 19:24:58 +0300 Subject: [PATCH 1/4] parse UUID --- .../dbmapping/CustomJpaRepository.java | 6 ++++-- .../dbmapping/SnapAdminRepository.java | 19 +++++++++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/java/tech/ailef/snapadmin/external/dbmapping/CustomJpaRepository.java b/src/main/java/tech/ailef/snapadmin/external/dbmapping/CustomJpaRepository.java index 97640fca..ea1c967c 100644 --- a/src/main/java/tech/ailef/snapadmin/external/dbmapping/CustomJpaRepository.java +++ b/src/main/java/tech/ailef/snapadmin/external/dbmapping/CustomJpaRepository.java @@ -143,8 +143,10 @@ public int update(DbObjectSchema schema, Map params, Map findById(DbObjectSchema schema, Object id) { SimpleJpaRepository repository = schema.getJpaRepository(); - - Optional optional = repository.findById(id); + Object parsedId = parsePrimaryKey(schema, id); + Optional optional = repository.findById(parsedId); if (optional.isEmpty()) return Optional.empty(); else { @@ -194,7 +194,8 @@ private Object save(DbObjectSchema schema, DbObject o) { */ @Transactional("transactionManager") public void attachManyToMany(DbObjectSchema schema, Object id, Map> params) { - Optional optional = findById(schema, id); + Object parsedId = parsePrimaryKey(schema, id); + Optional optional = findById(schema, parsedId); DbObject dbObject = optional.orElseThrow(() -> { return new SnapAdminException("Unable to retrieve newly inserted item"); @@ -210,7 +211,8 @@ public void attachManyToMany(DbObjectSchema schema, Object id, Map traverseMany = new ArrayList<>(); for (String oId : idValues) { - Optional findById = findById(linkedSchema, oId); + Object linkedParsedId = parsePrimaryKey(linkedSchema, oId); + Optional findById = findById(linkedSchema, linkedParsedId); if (findById.isPresent()) { traverseMany.add(findById.get()); } @@ -324,7 +326,12 @@ public DbQueryResult executeQuery(String sql) { @SuppressWarnings("unchecked") @Transactional("transactionManager") public void delete(DbObjectSchema schema, String id) { - schema.getJpaRepository().deleteById(id); + Object parsedId = parsePrimaryKey(schema, id); + schema.getJpaRepository().deleteById(parsedId); } - + + private Object parsePrimaryKey(DbObjectSchema schema, Object rawId) { + DbField idField = schema.getFieldByName("id"); + return idField.getType().parseValue(rawId); +} } From 6a23dd9125c2033c1c8675e16467ff39843944b6 Mon Sep 17 00:00:00 2001 From: celinemadi-alc Date: Tue, 16 Sep 2025 13:37:05 +0300 Subject: [PATCH 2/4] QUAL-5999 handle null value --- .../external/dbmapping/CustomJpaRepository.java | 10 ++++++++-- .../external/dbmapping/fields/UUIDFieldType.java | 5 ++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/tech/ailef/snapadmin/external/dbmapping/CustomJpaRepository.java b/src/main/java/tech/ailef/snapadmin/external/dbmapping/CustomJpaRepository.java index ea1c967c..c572cfde 100644 --- a/src/main/java/tech/ailef/snapadmin/external/dbmapping/CustomJpaRepository.java +++ b/src/main/java/tech/ailef/snapadmin/external/dbmapping/CustomJpaRepository.java @@ -32,6 +32,7 @@ import tech.ailef.snapadmin.external.dbmapping.fields.DbField; import tech.ailef.snapadmin.external.dbmapping.fields.StringFieldType; import tech.ailef.snapadmin.external.dbmapping.fields.TextFieldType; +import tech.ailef.snapadmin.external.dbmapping.fields.UUIDFieldType; import tech.ailef.snapadmin.external.dto.CompareOperator; import tech.ailef.snapadmin.external.dto.QueryFilter; import tech.ailef.snapadmin.external.exceptions.SnapAdminException; @@ -133,8 +134,13 @@ public int update(DbObjectSchema schema, Map params, Map Date: Tue, 16 Sep 2025 13:40:24 +0300 Subject: [PATCH 3/4] QUAL-5999 remove unused import --- .../ailef/snapadmin/external/dbmapping/CustomJpaRepository.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/tech/ailef/snapadmin/external/dbmapping/CustomJpaRepository.java b/src/main/java/tech/ailef/snapadmin/external/dbmapping/CustomJpaRepository.java index c572cfde..63310a16 100644 --- a/src/main/java/tech/ailef/snapadmin/external/dbmapping/CustomJpaRepository.java +++ b/src/main/java/tech/ailef/snapadmin/external/dbmapping/CustomJpaRepository.java @@ -32,7 +32,6 @@ import tech.ailef.snapadmin.external.dbmapping.fields.DbField; import tech.ailef.snapadmin.external.dbmapping.fields.StringFieldType; import tech.ailef.snapadmin.external.dbmapping.fields.TextFieldType; -import tech.ailef.snapadmin.external.dbmapping.fields.UUIDFieldType; import tech.ailef.snapadmin.external.dto.CompareOperator; import tech.ailef.snapadmin.external.dto.QueryFilter; import tech.ailef.snapadmin.external.exceptions.SnapAdminException; From c2070aa0168341598f82bab45c54c12e22505438 Mon Sep 17 00:00:00 2001 From: celinemadi-alc Date: Tue, 16 Sep 2025 13:41:31 +0300 Subject: [PATCH 4/4] QUAL-5999 indent --- .../snapadmin/external/dbmapping/fields/UUIDFieldType.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/tech/ailef/snapadmin/external/dbmapping/fields/UUIDFieldType.java b/src/main/java/tech/ailef/snapadmin/external/dbmapping/fields/UUIDFieldType.java index 98c78bac..e8efa944 100644 --- a/src/main/java/tech/ailef/snapadmin/external/dbmapping/fields/UUIDFieldType.java +++ b/src/main/java/tech/ailef/snapadmin/external/dbmapping/fields/UUIDFieldType.java @@ -20,8 +20,8 @@ public String getFragmentName() { @Override public Object parseValue(Object value) { if (value == null) return null; - String str = value.toString().trim(); - if (str.isEmpty()) return null; + String str = value.toString().trim(); + if (str.isEmpty()) return null; return java.util.UUID.fromString(str); }