Couple more slight tweaks :)
This commit is contained in:
		| @@ -245,7 +245,7 @@ namespace PluralKit.Bot | ||||
|                     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)) | ||||
|                 .ToList(); | ||||
|              | ||||
| @@ -262,14 +262,14 @@ namespace PluralKit.Bot | ||||
|             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); | ||||
|              | ||||
|             Task Renderer(DiscordEmbedBuilder eb, IEnumerable<PKGroup> page) | ||||
|             Task Renderer(DiscordEmbedBuilder eb, IEnumerable<ListedGroup> page) | ||||
|             { | ||||
|                 eb.WithSimpleLineContent(page.Select(g => | ||||
|                 { | ||||
|                     if (g.DisplayName != null) | ||||
|                         return $"[`{g.Hid}`] **{g.Name}** ({g.DisplayName})"; | ||||
|                         return $"[`{g.Hid}`] **{g.Name}** ({g.DisplayName}) ({"member".ToQuantity(g.MemberCount)})"; | ||||
|                     else | ||||
|                         return $"[`{g.Hid}`] **{g.Name}**"; | ||||
|                         return $"[`{g.Hid}`] **{g.Name}** ({"member".ToQuantity(g.MemberCount)})"; | ||||
|                 })); | ||||
|                 eb.WithFooter($"{groups.Count} total."); | ||||
|                 return Task.CompletedTask; | ||||
|   | ||||
| @@ -26,6 +26,7 @@ create table group_members ( | ||||
|     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; | ||||
|   | ||||
| @@ -11,6 +11,9 @@ namespace PluralKit.Core | ||||
|     { | ||||
|         public static Task<IEnumerable<SystemFronter>> QueryCurrentFronters(this IPKConnection conn, SystemId 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) | ||||
|         { | ||||
|   | ||||
							
								
								
									
										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 | ||||
|             -- Any other privacy (rn just '2'), return null description (missing case = null in SQL) | ||||
|         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_fronters; | ||||
| drop view if exists member_list; | ||||
| drop view if exists group_list; | ||||
|  | ||||
| drop function if exists message_context; | ||||
| drop function if exists proxy_members; | ||||
|   | ||||
| @@ -34,10 +34,7 @@ namespace PluralKit.Core | ||||
|          | ||||
|         public static Task<PKGroup?> QueryGroupByHid(this IPKConnection conn, string hid) => | ||||
|             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, | ||||
|                                                       PrivacyLevel? privacyFilter = null) | ||||
|         { | ||||
|   | ||||
| @@ -5,20 +5,20 @@ namespace PluralKit.Core | ||||
| { | ||||
|     public class PKGroup | ||||
|     { | ||||
|         public GroupId Id { get; } | ||||
|         public string Hid { get; } = null!; | ||||
|         public SystemId System { get; } | ||||
|         public GroupId Id { get; private set; } | ||||
|         public string Hid { get; private set; } = null!; | ||||
|         public SystemId System { get; private set; } | ||||
|  | ||||
|         public string Name { get; } = null!; | ||||
|         public string? DisplayName { get; } | ||||
|         public string? Description { get; } | ||||
|         public string? Icon { get; } | ||||
|         public string Name { get; private set; } = null!; | ||||
|         public string? DisplayName { get; private set; } | ||||
|         public string? Description { get; private set; } | ||||
|         public string? Icon { get; private set; } | ||||
|  | ||||
|         public PrivacyLevel DescriptionPrivacy { get; } | ||||
|         public PrivacyLevel IconPrivacy { get; } | ||||
|         public PrivacyLevel ListPrivacy { get; } | ||||
|         public PrivacyLevel Visibility { get; } | ||||
|         public PrivacyLevel DescriptionPrivacy { get; private set; } | ||||
|         public PrivacyLevel IconPrivacy { get; private set; } | ||||
|         public PrivacyLevel ListPrivacy { get; private set; } | ||||
|         public PrivacyLevel Visibility { get; private set; } | ||||
|          | ||||
|         public Instant Created { get; } | ||||
|         public Instant Created { get; private set; } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user