Fixed extremly slow .clubinfo, however they're case sensitive now. Just target a user for best experience.

This commit is contained in:
Master Kwoth 2017-09-23 18:51:51 +02:00
parent 2d8b9d677c
commit 763d529c74
3 changed files with 8 additions and 6 deletions

View File

@ -117,12 +117,12 @@ namespace NadekoBot.Modules.Xp
.AddField("Owner", club.Owner.ToString(), true) .AddField("Owner", club.Owner.ToString(), true)
.AddField("Level Req.", club.MinimumLevelReq.ToString(), true) .AddField("Level Req.", club.MinimumLevelReq.ToString(), true)
.AddField("Members", string.Join("\n", club.Users .AddField("Members", string.Join("\n", club.Users
.OrderByDescending(x => x.IsClubAdmin || club.OwnerId == x.Id)
.Skip(page * 10) .Skip(page * 10)
.Take(10) .Take(10)
.OrderByDescending(x => x.IsClubAdmin)
.Select(x => .Select(x =>
{ {
if (x.IsClubAdmin) if (x.IsClubAdmin || club.OwnerId == x.Id)
return x.ToString() + "⭐"; return x.ToString() + "⭐";
return x.ToString(); return x.ToString();
})), false); })), false);

View File

@ -113,7 +113,7 @@ namespace NadekoBot.Modules.Xp.Services
using (var uow = _db.UnitOfWork) using (var uow = _db.UnitOfWork)
{ {
club = uow.Clubs.GetByName(name.Trim().ToLowerInvariant(), discrim); club = uow.Clubs.GetByName(name, discrim);
if (club == null) if (club == null)
return false; return false;
else else

View File

@ -52,10 +52,11 @@ namespace NadekoBot.Services.Database.Repositories.Impl
{ {
if (func == null) if (func == null)
return _set return _set
.Where(x => x.Name == name && x.Discrim == discrim)
.Include(x => x.Users)
.Include(x => x.Bans) .Include(x => x.Bans)
.Include(x => x.Applicants) .Include(x => x.Applicants)
.Include(x => x.Users) .FirstOrDefault();
.FirstOrDefault(x => x.Name.ToLowerInvariant() == name && x.Discrim == discrim);
return func(_set).FirstOrDefault(x => x.Name == name && x.Discrim == discrim); return func(_set).FirstOrDefault(x => x.Name == name && x.Discrim == discrim);
} }
@ -72,7 +73,8 @@ namespace NadekoBot.Services.Database.Repositories.Impl
public ClubInfo GetByMember(ulong userId, Func<DbSet<ClubInfo>, IQueryable<ClubInfo>> func = null) public ClubInfo GetByMember(ulong userId, Func<DbSet<ClubInfo>, IQueryable<ClubInfo>> func = null)
{ {
if (func == null) if (func == null)
return _set.Include(x => x.Users) return _set
.Include(x => x.Users)
.Include(x => x.Bans) .Include(x => x.Bans)
.Include(x => x.Applicants) .Include(x => x.Applicants)
.FirstOrDefault(x => x.Users.Any(y => y.UserId == userId)); .FirstOrDefault(x => x.Users.Any(y => y.UserId == userId));