Couple more slight tweaks :)
This commit is contained in:
parent
1bb5d203df
commit
10c01da39b
@ -245,7 +245,7 @@ namespace PluralKit.Bot
|
|||||||
throw new PKError("You do not have permission to access this information.");
|
throw new PKError("You do not have permission to access this information.");
|
||||||
}
|
}
|
||||||
|
|
||||||
var groups = (await conn.QueryGroupsInSystem(system.Id))
|
var groups = (await conn.QueryGroupList(system.Id))
|
||||||
.Where(g => g.Visibility.CanAccess(pctx))
|
.Where(g => g.Visibility.CanAccess(pctx))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
@ -262,14 +262,14 @@ namespace PluralKit.Bot
|
|||||||
var title = system.Name != null ? $"Groups of {system.Name} (`{system.Hid}`)" : $"Groups of `{system.Hid}`";
|
var title = system.Name != null ? $"Groups of {system.Name} (`{system.Hid}`)" : $"Groups of `{system.Hid}`";
|
||||||
await ctx.Paginate(groups.ToAsyncEnumerable(), groups.Count, 25, title, Renderer);
|
await ctx.Paginate(groups.ToAsyncEnumerable(), groups.Count, 25, title, Renderer);
|
||||||
|
|
||||||
Task Renderer(DiscordEmbedBuilder eb, IEnumerable<PKGroup> page)
|
Task Renderer(DiscordEmbedBuilder eb, IEnumerable<ListedGroup> page)
|
||||||
{
|
{
|
||||||
eb.WithSimpleLineContent(page.Select(g =>
|
eb.WithSimpleLineContent(page.Select(g =>
|
||||||
{
|
{
|
||||||
if (g.DisplayName != null)
|
if (g.DisplayName != null)
|
||||||
return $"[`{g.Hid}`] **{g.Name}** ({g.DisplayName})";
|
return $"[`{g.Hid}`] **{g.Name}** ({g.DisplayName}) ({"member".ToQuantity(g.MemberCount)})";
|
||||||
else
|
else
|
||||||
return $"[`{g.Hid}`] **{g.Name}**";
|
return $"[`{g.Hid}`] **{g.Name}** ({"member".ToQuantity(g.MemberCount)})";
|
||||||
}));
|
}));
|
||||||
eb.WithFooter($"{groups.Count} total.");
|
eb.WithFooter($"{groups.Count} total.");
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
@ -26,6 +26,7 @@ create table group_members (
|
|||||||
primary key (group_id, member_id)
|
primary key (group_id, member_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
alter table systems add column group_list_privacy integer check (group_list_privacy in (1, 2)) not null default systems.member_list_privacy;
|
alter table systems add column group_list_privacy integer check (group_list_privacy in (1, 2)) not null default 1;
|
||||||
|
update systems set group_list_privacy = member_list_privacy;
|
||||||
|
|
||||||
update info set schema_version = 9;
|
update info set schema_version = 9;
|
||||||
|
@ -11,6 +11,9 @@ namespace PluralKit.Core
|
|||||||
{
|
{
|
||||||
public static Task<IEnumerable<SystemFronter>> QueryCurrentFronters(this IPKConnection conn, SystemId system) =>
|
public static Task<IEnumerable<SystemFronter>> QueryCurrentFronters(this IPKConnection conn, SystemId system) =>
|
||||||
conn.QueryAsync<SystemFronter>("select * from system_fronters where system = @system", new {system});
|
conn.QueryAsync<SystemFronter>("select * from system_fronters where system = @system", new {system});
|
||||||
|
|
||||||
|
public static Task<IEnumerable<ListedGroup>> QueryGroupList(this IPKConnection conn, SystemId system) =>
|
||||||
|
conn.QueryAsync<ListedGroup>("select * from group_list where system = @System", new {System = system});
|
||||||
|
|
||||||
public static Task<IEnumerable<ListedMember>> QueryMemberList(this IPKConnection conn, SystemId system, MemberListQueryOptions opts)
|
public static Task<IEnumerable<ListedMember>> QueryMemberList(this IPKConnection conn, SystemId system, MemberListQueryOptions opts)
|
||||||
{
|
{
|
||||||
|
7
PluralKit.Core/Database/Views/ListedGroup.cs
Normal file
7
PluralKit.Core/Database/Views/ListedGroup.cs
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
namespace PluralKit.Core
|
||||||
|
{
|
||||||
|
public class ListedGroup : PKGroup
|
||||||
|
{
|
||||||
|
public int MemberCount { get; }
|
||||||
|
}
|
||||||
|
}
|
@ -54,4 +54,10 @@ select members.*,
|
|||||||
when members.description_privacy = 1 then members.description
|
when members.description_privacy = 1 then members.description
|
||||||
-- Any other privacy (rn just '2'), return null description (missing case = null in SQL)
|
-- Any other privacy (rn just '2'), return null description (missing case = null in SQL)
|
||||||
end as public_description
|
end as public_description
|
||||||
from members;
|
from members;
|
||||||
|
|
||||||
|
create view group_list as
|
||||||
|
select groups.*,
|
||||||
|
-- Find group member count
|
||||||
|
(select count(*) from group_members where group_id = groups.id) as member_count
|
||||||
|
from groups;
|
@ -5,6 +5,7 @@
|
|||||||
drop view if exists system_last_switch;
|
drop view if exists system_last_switch;
|
||||||
drop view if exists system_fronters;
|
drop view if exists system_fronters;
|
||||||
drop view if exists member_list;
|
drop view if exists member_list;
|
||||||
|
drop view if exists group_list;
|
||||||
|
|
||||||
drop function if exists message_context;
|
drop function if exists message_context;
|
||||||
drop function if exists proxy_members;
|
drop function if exists proxy_members;
|
||||||
|
@ -34,10 +34,7 @@ namespace PluralKit.Core
|
|||||||
|
|
||||||
public static Task<PKGroup?> QueryGroupByHid(this IPKConnection conn, string hid) =>
|
public static Task<PKGroup?> QueryGroupByHid(this IPKConnection conn, string hid) =>
|
||||||
conn.QueryFirstOrDefaultAsync<PKGroup?>("select * from groups where hid = @hid", new {hid = hid.ToLowerInvariant()});
|
conn.QueryFirstOrDefaultAsync<PKGroup?>("select * from groups where hid = @hid", new {hid = hid.ToLowerInvariant()});
|
||||||
|
|
||||||
public static Task<IEnumerable<PKGroup>> QueryGroupsInSystem(this IPKConnection conn, SystemId system) =>
|
|
||||||
conn.QueryAsync<PKGroup>("select * from groups where system = @System", new {System = system});
|
|
||||||
|
|
||||||
public static Task<int> QueryGroupMemberCount(this IPKConnection conn, GroupId id,
|
public static Task<int> QueryGroupMemberCount(this IPKConnection conn, GroupId id,
|
||||||
PrivacyLevel? privacyFilter = null)
|
PrivacyLevel? privacyFilter = null)
|
||||||
{
|
{
|
||||||
|
@ -5,20 +5,20 @@ namespace PluralKit.Core
|
|||||||
{
|
{
|
||||||
public class PKGroup
|
public class PKGroup
|
||||||
{
|
{
|
||||||
public GroupId Id { get; }
|
public GroupId Id { get; private set; }
|
||||||
public string Hid { get; } = null!;
|
public string Hid { get; private set; } = null!;
|
||||||
public SystemId System { get; }
|
public SystemId System { get; private set; }
|
||||||
|
|
||||||
public string Name { get; } = null!;
|
public string Name { get; private set; } = null!;
|
||||||
public string? DisplayName { get; }
|
public string? DisplayName { get; private set; }
|
||||||
public string? Description { get; }
|
public string? Description { get; private set; }
|
||||||
public string? Icon { get; }
|
public string? Icon { get; private set; }
|
||||||
|
|
||||||
public PrivacyLevel DescriptionPrivacy { get; }
|
public PrivacyLevel DescriptionPrivacy { get; private set; }
|
||||||
public PrivacyLevel IconPrivacy { get; }
|
public PrivacyLevel IconPrivacy { get; private set; }
|
||||||
public PrivacyLevel ListPrivacy { get; }
|
public PrivacyLevel ListPrivacy { get; private set; }
|
||||||
public PrivacyLevel Visibility { get; }
|
public PrivacyLevel Visibility { get; private set; }
|
||||||
|
|
||||||
public Instant Created { get; }
|
public Instant Created { get; private set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user