.liqu can be ordered by keywords (default) or id now, closes #1857

This commit is contained in:
Master Kwoth 2017-11-20 02:48:09 +01:00
parent 8fb21d1a3e
commit a0c5b469b8
5 changed files with 23 additions and 9 deletions

View File

@ -26,17 +26,16 @@ namespace NadekoBot.Modules.Utility
[NadekoCommand, Usage, Description, Aliases]
[RequireContext(ContextType.Guild)]
public async Task ListQuotes(int page = 1)
public async Task ListQuotes(int page = 1, OrderType order = OrderType.Keyword)
{
page -= 1;
if (page < 0)
return;
IEnumerable<Quote> quotes;
using (var uow = _db.UnitOfWork)
{
quotes = uow.Quotes.GetGroup(Context.Guild.Id, page * 16, 16);
quotes = uow.Quotes.GetGroup(Context.Guild.Id, page, order);
}
if (quotes.Any())

View File

@ -13,4 +13,11 @@ namespace NadekoBot.Core.Services.Database.Models
[Required]
public string Text { get; set; }
}
public enum OrderType
{
Id,
Keyword
}
}

View File

@ -9,7 +9,7 @@ namespace NadekoBot.Core.Services.Database.Repositories
IEnumerable<Quote> GetAllQuotesByKeyword(ulong guildId, string keyword);
Task<Quote> GetRandomQuoteByKeywordAsync(ulong guildId, string keyword);
Task<Quote> SearchQuoteKeywordTextAsync(ulong guildId, string keyword, string text);
IEnumerable<Quote> GetGroup(ulong guildId, int skip, int take);
IEnumerable<Quote> GetGroup(ulong guildId, int page, OrderType order);
void RemoveAllByKeyword(ulong guildId, string keyword);
}
}

View File

@ -18,8 +18,16 @@ namespace NadekoBot.Core.Services.Database.Repositories.Impl
public IEnumerable<Quote> GetAllQuotesByKeyword(ulong guildId, string keyword) =>
_set.Where(q => q.GuildId == guildId && q.Keyword == keyword);
public IEnumerable<Quote> GetGroup(ulong guildId, int skip, int take) =>
_set.Where(q=>q.GuildId == guildId).OrderBy(q => q.Keyword).Skip(skip).Take(take).ToList();
public IEnumerable<Quote> GetGroup(ulong guildId, int page, OrderType order)
{
var q = _set.Where(x => x.GuildId == guildId);
if (order == OrderType.Keyword)
q.OrderBy(x => x.Keyword);
else
q.OrderBy(x => x.Id);
return q.Skip(15 * page).Take(15).ToArray();
}
public Task<Quote> GetRandomQuoteByKeywordAsync(ulong guildId, string keyword)
{

View File

@ -1971,10 +1971,10 @@
},
"listquotes": {
"Cmd": "listquotes liqu",
"Desc": "Lists all quotes on the server ordered alphabetically. 15 Per page.",
"Desc": "Lists all quotes on the server ordered alphabetically or by ID. 15 Per page.",
"Usage": [
"{0}liqu",
"{0}liqu 3"
"{0}liqu 3",
"{0}liqu 3 id"
]
},
"typedel": {