From cd8b4c9ed1065fdf726f94f0fff01f42eb328abe Mon Sep 17 00:00:00 2001 From: Christian Kurz Date: Fri, 18 Oct 2024 17:08:02 +0200 Subject: [PATCH] introduce github_gid (to be renamed) --- .../main/graphql/gropius/sync/github/CommonData.graphql | 6 ++++++ .../main/kotlin/gropius/sync/github/GithubDataService.kt | 9 ++++++++- .../src/main/kotlin/gropius/sync/github/GithubSync.kt | 4 ++-- .../gropius/sync/github/config/IMSConfigManager.kt | 4 ++++ 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/sync-github/src/main/graphql/gropius/sync/github/CommonData.graphql b/sync-github/src/main/graphql/gropius/sync/github/CommonData.graphql index d106f81d..7f431544 100644 --- a/sync-github/src/main/graphql/gropius/sync/github/CommonData.graphql +++ b/sync-github/src/main/graphql/gropius/sync/github/CommonData.graphql @@ -47,4 +47,10 @@ fragment IssueData on Issue { } query CurrentMetaData { ...MetaData +} +query FindUser($login: String!) { + ...MetaData + user(login: $login) { + ...UserData + } } \ No newline at end of file diff --git a/sync-github/src/main/kotlin/gropius/sync/github/GithubDataService.kt b/sync-github/src/main/kotlin/gropius/sync/github/GithubDataService.kt index ca33d16e..9488be53 100644 --- a/sync-github/src/main/kotlin/gropius/sync/github/GithubDataService.kt +++ b/sync-github/src/main/kotlin/gropius/sync/github/GithubDataService.kt @@ -21,6 +21,7 @@ import gropius.sync.github.config.IMSConfig import gropius.sync.github.config.IMSProjectConfig import gropius.sync.github.generated.fragment.LabelData import gropius.sync.github.generated.fragment.UserData +import gropius.sync.github.generated.fragment.UserData.Companion.asNode import gropius.sync.github.generated.fragment.UserData.Companion.asUser import gropius.sync.model.LabelInfo import gropius.sync.repository.LabelInfoRepository @@ -115,6 +116,12 @@ class GithubDataService( val databaseId = userData?.asUser()?.databaseId val encodedAccountId = jsonNodeMapper.jsonNodeToDeterministicString(objectMapper.valueToTree(databaseId ?: 0)) + val encodedUserId = + jsonNodeMapper.jsonNodeToDeterministicString( + objectMapper.valueToTree( + userData?.asNode()?.id ?: "" + ) + ) val username = userData?.login ?: FALLBACK_USER_NAME val ims = neoOperations.findById(imsProject.ims().value.rawId!!)!! if (databaseId != null) { @@ -133,7 +140,7 @@ class GithubDataService( userData?.asUser()?.email, null, username, - mutableMapOf("github_id" to encodedAccountId) + mutableMapOf("github_id" to encodedAccountId, "github_gid" to encodedUserId) ) imsUser.ims().value = imsProject.ims().value imsUser.template().value = imsUser.ims().value.template().value.imsUserTemplate().value diff --git a/sync-github/src/main/kotlin/gropius/sync/github/GithubSync.kt b/sync-github/src/main/kotlin/gropius/sync/github/GithubSync.kt index 92c7526a..e93e6463 100644 --- a/sync-github/src/main/kotlin/gropius/sync/github/GithubSync.kt +++ b/sync-github/src/main/kotlin/gropius/sync/github/GithubSync.kt @@ -190,7 +190,7 @@ final class GithubSync( if (assignedUser as? IMSUser != null) listOf(assignedUser) else if (assignedUser as? GropiusUser != null) assignedUser.imsUsers() .filter { it.ims().value == imsProject.ims().value } else emptyList() val ids = imsUsers.map { - it.templatedFields["github_id"]!! + githubDataService.objectMapper.readTree(it.templatedFields["github_gid"]!!).textValue() } if (ids.isEmpty()) { return null @@ -216,7 +216,7 @@ final class GithubSync( if (assignedUser as? IMSUser != null) listOf(assignedUser) else if (assignedUser as? GropiusUser != null) assignedUser.imsUsers() .filter { it.ims().value == imsProject.ims().value } else emptyList() val ids = imsUsers.map { - it.templatedFields["github_id"]!! + githubDataService.objectMapper.readTree(it.templatedFields["github_gid"]!!).textValue() } if (ids.isEmpty()) { return null diff --git a/sync-github/src/main/kotlin/gropius/sync/github/config/IMSConfigManager.kt b/sync-github/src/main/kotlin/gropius/sync/github/config/IMSConfigManager.kt index f6a389dc..fcb7f017 100644 --- a/sync-github/src/main/kotlin/gropius/sync/github/config/IMSConfigManager.kt +++ b/sync-github/src/main/kotlin/gropius/sync/github/config/IMSConfigManager.kt @@ -91,6 +91,10 @@ class IMSConfigManager( "github_id" to obj { "nullable" to true "type" to "int32" + }.toString(), + "github_gid" to obj { + "nullable" to true + "type" to "string" }.toString() ) }