From 7ec738520bfe55c106b2a110584d7825d88aed10 Mon Sep 17 00:00:00 2001 From: Simon Chapman Date: Thu, 17 Apr 2025 15:40:19 +0100 Subject: [PATCH] Add associations count for users --- .../main/java/org/gitlab4j/api/UserApi.java | 15 ++++++ .../org/gitlab4j/api/models/Associations.java | 51 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 gitlab4j-models/src/main/java/org/gitlab4j/api/models/Associations.java diff --git a/gitlab4j-api/src/main/java/org/gitlab4j/api/UserApi.java b/gitlab4j-api/src/main/java/org/gitlab4j/api/UserApi.java index 11cc10146..b64689888 100644 --- a/gitlab4j-api/src/main/java/org/gitlab4j/api/UserApi.java +++ b/gitlab4j-api/src/main/java/org/gitlab4j/api/UserApi.java @@ -13,6 +13,7 @@ import jakarta.ws.rs.core.Response; import org.gitlab4j.api.GitLabApi.ApiVersion; +import org.gitlab4j.api.models.Associations; import org.gitlab4j.api.models.CustomAttribute; import org.gitlab4j.api.models.Email; import org.gitlab4j.api.models.Exists; @@ -1502,6 +1503,20 @@ public Pager getMemberships(Long userId, int itemsPerPage) throws Gi return (new Pager<>(this, Membership.class, itemsPerPage, formData.asMap(), "users", userId, "memberships")); } + /** + * Get a count of a user’s projects, groups, issues, and merge requests + * + *
GitLab Endpoint: GET /user/:id/associations_count
+ * + * @param userId the ID of the user to get the associations for + * @return the count of each type of association + * @throws GitLabApiException if any exception occurs + */ + public Associations getAssociationsCount(Long userId) throws GitLabApiException { + Response response = get(Response.Status.OK, null, "users", userId, "associations_count"); + return (response.readEntity(Associations.class)); + } + /** * Activates the given user (admin only) * diff --git a/gitlab4j-models/src/main/java/org/gitlab4j/api/models/Associations.java b/gitlab4j-models/src/main/java/org/gitlab4j/api/models/Associations.java new file mode 100644 index 000000000..ee0834d70 --- /dev/null +++ b/gitlab4j-models/src/main/java/org/gitlab4j/api/models/Associations.java @@ -0,0 +1,51 @@ +package org.gitlab4j.api.models; + +import java.io.Serializable; + +import org.gitlab4j.models.utils.JacksonJson; + +public class Associations implements Serializable { + private static final long serialVersionUID = 1L; + + private int groupsCount; + private int projectsCount; + private int issuesCount; + private int mergeRequestsCount; + + public int getGroupsCount() { + return groupsCount; + } + + public void setGroupsCount(int groupsCount) { + this.groupsCount = groupsCount; + } + + public int getProjectsCount() { + return projectsCount; + } + + public void setProjectsCount(int projectsCount) { + this.projectsCount = projectsCount; + } + + public int getIssuesCount() { + return issuesCount; + } + + public void setIssuesCount(int issuesCount) { + this.issuesCount = issuesCount; + } + + public int getMergeRequestsCount() { + return mergeRequestsCount; + } + + public void setMergeRequestsCount(int mergeRequestsCount) { + this.mergeRequestsCount = mergeRequestsCount; + } + + @Override + public String toString() { + return (JacksonJson.toJsonString(this)); + } +}