From 1a0609f05ce6899ae7db2a698f264a37d7b7d1d4 Mon Sep 17 00:00:00 2001 From: amvanbaren Date: Mon, 11 Nov 2024 15:25:36 +0200 Subject: [PATCH] Add 'system' provider Add 'system' provider because nulls are treated as distinct values in database --- .../ExtensionControlService.java | 3 ++- .../migration/FixTargetPlatformsService.java | 3 ++- .../openvsx/mirror/DataMirrorService.java | 19 ++++++++++++++----- .../db/migration/V1_49__System_User.sql | 1 + 4 files changed, 19 insertions(+), 7 deletions(-) create mode 100644 server/src/main/resources/db/migration/V1_49__System_User.sql diff --git a/server/src/main/java/org/eclipse/openvsx/extension_control/ExtensionControlService.java b/server/src/main/java/org/eclipse/openvsx/extension_control/ExtensionControlService.java index 0d3ebfa31..f45dbd94d 100644 --- a/server/src/main/java/org/eclipse/openvsx/extension_control/ExtensionControlService.java +++ b/server/src/main/java/org/eclipse/openvsx/extension_control/ExtensionControlService.java @@ -88,9 +88,10 @@ public void applicationStarted(ApplicationStartedEvent event) { @Transactional public UserData createExtensionControlUser() { var userName = "ExtensionControlUser"; - var user = repositories.findUserByLoginName(null, userName); + var user = repositories.findUserByLoginName("system", userName); if(user == null) { user = new UserData(); + user.setProvider("system"); user.setLoginName(userName); entityManager.persist(user); } diff --git a/server/src/main/java/org/eclipse/openvsx/migration/FixTargetPlatformsService.java b/server/src/main/java/org/eclipse/openvsx/migration/FixTargetPlatformsService.java index 2c8136910..4ed719f12 100644 --- a/server/src/main/java/org/eclipse/openvsx/migration/FixTargetPlatformsService.java +++ b/server/src/main/java/org/eclipse/openvsx/migration/FixTargetPlatformsService.java @@ -29,9 +29,10 @@ public FixTargetPlatformsService(RepositoryService repositories, EntityManager e @Transactional public UserData getUser() { var userName = "FixTargetPlatformMigration"; - var user = repositories.findUserByLoginName(null, userName); + var user = repositories.findUserByLoginName("system", userName); if(user == null) { user = new UserData(); + user.setProvider("system"); user.setLoginName(userName); entityManager.persist(user); } diff --git a/server/src/main/java/org/eclipse/openvsx/mirror/DataMirrorService.java b/server/src/main/java/org/eclipse/openvsx/mirror/DataMirrorService.java index 81e8ffbe7..a47add37e 100644 --- a/server/src/main/java/org/eclipse/openvsx/mirror/DataMirrorService.java +++ b/server/src/main/java/org/eclipse/openvsx/mirror/DataMirrorService.java @@ -131,12 +131,21 @@ public List getExtensionTargetVersions(String namespaceName, S @Transactional public UserData createMirrorUser() { - var user = repositories.findUserByLoginName(null, userName); - if(user == null) { - user = new UserData(); - user.setLoginName(userName); - entityManager.persist(user); + var user = repositories.findUserByLoginName("system", userName); + if(user != null) { + return user; } + + user = repositories.findUserByLoginName(null, userName); + if(user != null) { + user.setProvider("system"); + return user; + } + + user = new UserData(); + user.setProvider("system"); + user.setLoginName(userName); + entityManager.persist(user); return user; } diff --git a/server/src/main/resources/db/migration/V1_49__System_User.sql b/server/src/main/resources/db/migration/V1_49__System_User.sql new file mode 100644 index 000000000..b3ef9251f --- /dev/null +++ b/server/src/main/resources/db/migration/V1_49__System_User.sql @@ -0,0 +1 @@ +UPDATE user_data SET provider = 'system' WHERE login_name IN ('ExtensionControlUser', 'FixTargetPlatformMigration'); \ No newline at end of file