fix: temporarily disable last message query in member_list

This commit is contained in:
spiral 2021-11-21 09:03:47 -05:00
parent b1f4253efb
commit 9c95ca2ed9
No known key found for this signature in database
GPG Key ID: A6059F0CA0E1BD31
4 changed files with 18 additions and 16 deletions

View File

@ -60,7 +60,8 @@ namespace PluralKit.Bot
if (ctx.MatchFlag("with-last-switch", "with-last-fronted", "with-last-front", "wls", "wlf")) if (ctx.MatchFlag("with-last-switch", "with-last-fronted", "with-last-front", "wls", "wlf"))
p.IncludeLastSwitch = true; p.IncludeLastSwitch = true;
if (ctx.MatchFlag("with-last-message", "with-last-proxy", "wlm", "wlp")) if (ctx.MatchFlag("with-last-message", "with-last-proxy", "wlm", "wlp"))
p.IncludeLastMessage = true; throw new PKError("Sorting by last message is temporarily disabled due to database issues, sorry.");
// p.IncludeLastMessage = true;
if (ctx.MatchFlag("with-message-count", "wmc")) if (ctx.MatchFlag("with-message-count", "wmc"))
p.IncludeMessageCount = true; p.IncludeMessageCount = true;
if (ctx.MatchFlag("with-created", "wc")) if (ctx.MatchFlag("with-created", "wc"))
@ -141,12 +142,12 @@ namespace PluralKit.Bot
ret += $"(last switched in: <t:{lastSw.Value.ToUnixTimeSeconds()}>)"; ret += $"(last switched in: <t:{lastSw.Value.ToUnixTimeSeconds()}>)";
break; break;
} }
case SortProperty.LastMessage: // case SortProperty.LastMessage:
{ // {
if (m.MetadataPrivacy.TryGet(lookupCtx, m.LastMessage, out var lastMsg)) // if (m.MetadataPrivacy.TryGet(lookupCtx, m.LastMessage, out var lastMsg))
ret += $"(last message: <t:{DiscordUtils.SnowflakeToInstant(lastMsg.Value).ToUnixTimeSeconds()}>)"; // ret += $"(last message: <t:{DiscordUtils.SnowflakeToInstant(lastMsg.Value).ToUnixTimeSeconds()}>)";
break; // break;
} // }
case SortProperty.CreationDate: case SortProperty.CreationDate:
{ {
if (m.MetadataPrivacy.TryGet(lookupCtx, m.Created, out var created)) if (m.MetadataPrivacy.TryGet(lookupCtx, m.Created, out var created))
@ -159,8 +160,8 @@ namespace PluralKit.Bot
ret += $"({count} messages)"; ret += $"({count} messages)";
else if (opts.IncludeLastSwitch && m.MetadataPrivacy.TryGet(lookupCtx, m.LastSwitchTime, out var lastSw)) else if (opts.IncludeLastSwitch && m.MetadataPrivacy.TryGet(lookupCtx, m.LastSwitchTime, out var lastSw))
ret += $"(last switched in: <t:{lastSw.Value.ToUnixTimeSeconds()}>)"; ret += $"(last switched in: <t:{lastSw.Value.ToUnixTimeSeconds()}>)";
else if (opts.IncludeLastMessage && m.MetadataPrivacy.TryGet(lookupCtx, m.LastMessage, out var lastMsg)) // else if (opts.IncludeLastMessage && m.MetadataPrivacy.TryGet(lookupCtx, m.LastMessage, out var lastMsg))
ret += $"(last message: <t:{DiscordUtils.SnowflakeToInstant(lastMsg.Value).ToUnixTimeSeconds()}>)"; // ret += $"(last message: <t:{DiscordUtils.SnowflakeToInstant(lastMsg.Value).ToUnixTimeSeconds()}>)";
else if (opts.IncludeCreated && m.MetadataPrivacy.TryGet(lookupCtx, m.Created, out var created)) else if (opts.IncludeCreated && m.MetadataPrivacy.TryGet(lookupCtx, m.Created, out var created))
ret += $"(created at <t:{created.ToUnixTimeSeconds()}>)"; ret += $"(created at <t:{created.ToUnixTimeSeconds()}>)";
else if (opts.IncludeAvatar && m.AvatarFor(lookupCtx) is { } avatarUrl) else if (opts.IncludeAvatar && m.AvatarFor(lookupCtx) is { } avatarUrl)
@ -203,8 +204,8 @@ namespace PluralKit.Bot
if ((opts.IncludeMessageCount || opts.SortProperty == SortProperty.MessageCount) && m.MessageCountFor(lookupCtx) is { } count && count > 0) if ((opts.IncludeMessageCount || opts.SortProperty == SortProperty.MessageCount) && m.MessageCountFor(lookupCtx) is { } count && count > 0)
profile.Append($"\n**Message count:** {count}"); profile.Append($"\n**Message count:** {count}");
if ((opts.IncludeLastMessage || opts.SortProperty == SortProperty.LastMessage) && m.MetadataPrivacy.TryGet(lookupCtx, m.LastMessage, out var lastMsg)) // if ((opts.IncludeLastMessage || opts.SortProperty == SortProperty.LastMessage) && m.MetadataPrivacy.TryGet(lookupCtx, m.LastMessage, out var lastMsg))
profile.Append($"\n**Last message:** {DiscordUtils.SnowflakeToInstant(lastMsg.Value).FormatZoned(zone)}"); // profile.Append($"\n**Last message:** {DiscordUtils.SnowflakeToInstant(lastMsg.Value).FormatZoned(zone)}");
if ((opts.IncludeLastSwitch || opts.SortProperty == SortProperty.LastSwitch) && m.MetadataPrivacy.TryGet(lookupCtx, m.LastSwitchTime, out var lastSw)) if ((opts.IncludeLastSwitch || opts.SortProperty == SortProperty.LastSwitch) && m.MetadataPrivacy.TryGet(lookupCtx, m.LastSwitchTime, out var lastSw))
profile.Append($"\n**Last switched in:** {lastSw.Value.FormatZoned(zone)}"); profile.Append($"\n**Last switched in:** {lastSw.Value.FormatZoned(zone)}");

View File

@ -98,9 +98,10 @@ namespace PluralKit.Bot
SortProperty.Birthdate => input SortProperty.Birthdate => input
.OrderByDescending(m => m.AnnualBirthday.HasValue) .OrderByDescending(m => m.AnnualBirthday.HasValue)
.ThenBy(m => m.AnnualBirthday, ReverseMaybe(Comparer<AnnualDate?>.Default)), .ThenBy(m => m.AnnualBirthday, ReverseMaybe(Comparer<AnnualDate?>.Default)),
SortProperty.LastMessage => input SortProperty.LastMessage => throw new PKError("Sorting by last message is temporarily disabled due to database issues, sorry."),
.OrderByDescending(m => m.LastMessage.HasValue) // SortProperty.LastMessage => input
.ThenByDescending(m => m.LastMessage, ReverseMaybe(Comparer<ulong?>.Default)), // .OrderByDescending(m => m.LastMessage.HasValue)
// .ThenByDescending(m => m.LastMessage, ReverseMaybe(Comparer<ulong?>.Default)),
SortProperty.LastSwitch => input SortProperty.LastSwitch => input
.OrderByDescending(m => m.LastSwitchTime.HasValue) .OrderByDescending(m => m.LastSwitchTime.HasValue)
.ThenByDescending(m => m.LastSwitchTime, ReverseMaybe(Comparer<Instant?>.Default)), .ThenByDescending(m => m.LastSwitchTime, ReverseMaybe(Comparer<Instant?>.Default)),

View File

@ -6,7 +6,7 @@ namespace PluralKit.Core
// TODO: is inheritance here correct? // TODO: is inheritance here correct?
public class ListedMember: PKMember public class ListedMember: PKMember
{ {
public ulong? LastMessage { get; } // public ulong? LastMessage { get; }
public Instant? LastSwitchTime { get; } public Instant? LastSwitchTime { get; }
public AnnualDate? AnnualBirthday => public AnnualDate? AnnualBirthday =>

View File

@ -30,7 +30,7 @@ create view member_list as
select members.*, select members.*,
-- Find last message ID -- Find last message ID
-- max(mid) does full table scan, order by/limit uses index (dunno why, but it works!) -- max(mid) does full table scan, order by/limit uses index (dunno why, but it works!)
(select mid from messages where messages.member = members.id order by mid desc nulls last limit 1) as last_message, -- (select mid from messages where messages.member = members.id order by mid desc nulls last limit 1) as last_message,
-- Find last switch timestamp -- Find last switch timestamp
( (