feat: with_members query string on /systems/:ref/members endpoint

This commit is contained in:
spiral
2021-11-01 00:12:11 -04:00
parent 8d02af7b94
commit 44ccf01f93
5 changed files with 47 additions and 18 deletions

View File

@@ -1,4 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using SqlKata;
@@ -25,6 +27,15 @@ namespace PluralKit.Core
return _db.QueryStream<PKMember>(query);
}
public Task<IEnumerable<GroupMember>> GetGroupMemberInfo(IEnumerable<GroupId> ids)
{
return _db.Query<GroupMember>(new Query("group_members")
.LeftJoin("groups", "groups.id", "group_members.group_id")
.LeftJoin("members", "members.id", "group_members.member_id")
.Select("groups.hid as group", "members.hid as member", "members.uuid as member_uuid", "members.member_visibility")
.WhereIn("group_members.group_id", ids.Select(x => x.Value).ToArray()));
}
// todo: add this to metrics tracking
public async Task AddGroupsToMember(MemberId member, IReadOnlyCollection<GroupId> groups)
{
@@ -93,4 +104,12 @@ namespace PluralKit.Core
return _db.ExecuteQuery(query);
}
}
public class GroupMember
{
public string Group { get; set; }
public string Member { get; set; }
public Guid MemberUuid { get; set; }
public PrivacyLevel MemberVisibility { get; set; }
}
}