group import/export
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
@@ -42,6 +43,23 @@ namespace PluralKit.Core
|
||||
o.Add("accounts", new JArray((await _repo.GetSystemAccounts(conn, system.Id)).ToList()));
|
||||
o.Add("members", new JArray((await _repo.GetSystemMembers(conn, system.Id).ToListAsync()).Select(m => m.ToJson(LookupContext.ByOwner))));
|
||||
|
||||
var groups = (await _repo.GetSystemGroups(conn, system.Id).ToListAsync());
|
||||
var j_groups = groups.Select(x => x.ToJson(LookupContext.ByOwner, isExport: 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()))})
|
||||
");
|
||||
|
||||
foreach (var row in q)
|
||||
((JArray)j_groups.Find(x => x.Value<string>("id") == row.Group)["members"]).Add(row.Member);
|
||||
}
|
||||
|
||||
o.Add("groups", new JArray(j_groups));
|
||||
|
||||
var switches = new JArray();
|
||||
var switchList = await _repo.GetPeriodFronters(conn, system.Id, null,
|
||||
Instant.FromDateTimeUtc(DateTime.MinValue.ToUniversalTime()), SystemClock.Instance.GetCurrentInstant());
|
||||
@@ -64,5 +82,12 @@ namespace PluralKit.Core
|
||||
|
||||
return await BulkImporter.PerformImport(conn, tx, _repo, _logger, userId, system, importFile, confirmFunc);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class GroupMember
|
||||
{
|
||||
public string Group { get; set; }
|
||||
public string Member { get; set; }
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user