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

@@ -40,15 +40,11 @@ namespace PluralKit.Core
o.Add("members", new JArray((await _repo.GetSystemMembers(system.Id).ToListAsync()).Select(m => m.ToJson(LookupContext.ByOwner))));
var groups = (await _repo.GetSystemGroups(system.Id).ToListAsync());
var j_groups = groups.Select(x => x.ToJson(LookupContext.ByOwner, isExport: true)).ToList();
var j_groups = groups.Select(x => x.ToJson(LookupContext.ByOwner, needsMembersArray: true)).ToList();
if (groups.Count > 0)
{
var q = await conn.QueryAsync<GroupMember>(@$"select groups.hid as group, members.hid as member from group_members
left join groups on groups.id = group_members.group_id
left join members on members.id = group_members.member_id
where group_members.group_id in ({string.Join(", ", groups.Select(x => x.Id.Value.ToString()))})
");
var q = await _repo.GetGroupMemberInfo(groups.Select(x => x.Id));
foreach (var row in q)
((JArray)j_groups.Find(x => x.Value<string>("id") == row.Group)["members"]).Add(row.Member);
@@ -80,10 +76,4 @@ namespace PluralKit.Core
}
}
public class GroupMember
{
public string Group { get; set; }
public string Member { get; set; }
}
}