private static (uint Results, IReadOnlyList <IPrivateMessage> PMs) ParseSqlMultiplePMs(Task <NpgsqlDataReader> task)
    {
        uint results = 0;
        List <IPrivateMessage> pms = new();

        if (task.IsCompletedSuccessfully)
        {
            DbDataReader reader = task.Result;
            while (reader?.Read() ?? false)
            {
                if (results == 0)
                {
                    results = (uint)(long)reader["results"];
                }

                pms.Add(PrivateMessageManager.ParseSqlPrivateMessage(reader));
            }
        }
        else if (task.IsFaulted)
        {
            PrivateMessageManager.logger.LogError(EventIds.PrivateMessageLoadFailed, task.Exception, $"Failed to load {nameof(IPrivateMessage)} from sql");
        }

        return(results, pms);
    }
    private static IPrivateMessage ParseSqlPm(Task <NpgsqlDataReader> task)
    {
        if (task.IsCompletedSuccessfully)
        {
            DbDataReader reader = task.Result;
            if (reader?.Read() ?? false)
            {
                return(PrivateMessageManager.ParseSqlPrivateMessage(reader));
            }
        }
        else if (task.IsFaulted)
        {
            PrivateMessageManager.logger.LogError(EventIds.PrivateMessageLoadFailed, task.Exception, $"Failed to load {nameof(IPrivateMessage)} from sql");
        }

        return(null);
    }