Removed music playlist and warning repositories

This commit is contained in:
Kwoth
2021-06-18 22:22:30 +02:00
parent a3fa8224c4
commit a6c7f1a629
9 changed files with 35 additions and 69 deletions

View File

@@ -13,6 +13,7 @@ using NadekoBot.Core.Common.TypeReaders.Models;
using NadekoBot.Core.Services; using NadekoBot.Core.Services;
using NadekoBot.Core.Services.Database.Models; using NadekoBot.Core.Services.Database.Models;
using NadekoBot.Extensions; using NadekoBot.Extensions;
using NadekoBot.Modules.Administration.Common;
using NadekoBot.Modules.Permissions.Services; using NadekoBot.Modules.Permissions.Services;
using Newtonsoft.Json; using Newtonsoft.Json;
using Serilog; using Serilog;
@@ -63,12 +64,13 @@ namespace NadekoBot.Modules.Administration.Services
ps = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.WarnPunishments)) ps = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.WarnPunishments))
.WarnPunishments; .WarnPunishments;
warnings += uow.Warnings warnings += uow._context
.Warnings
.ForId(guildId, userId) .ForId(guildId, userId)
.Where(w => !w.Forgiven && w.UserId == userId) .Where(w => !w.Forgiven && w.UserId == userId)
.Count(); .Count();
uow.Warnings.Add(warn); uow._context.Warnings.Add(warn);
uow.SaveChanges(); uow.SaveChanges();
} }
@@ -244,7 +246,7 @@ WHERE GuildId={guildId}
{ {
using (var uow = _db.GetDbContext()) using (var uow = _db.GetDbContext())
{ {
return uow.Warnings.GetForGuild(gid).GroupBy(x => x.UserId).ToArray(); return uow._context.Warnings.GetForGuild(gid).GroupBy(x => x.UserId).ToArray();
} }
} }
@@ -252,7 +254,7 @@ WHERE GuildId={guildId}
{ {
using (var uow = _db.GetDbContext()) using (var uow = _db.GetDbContext())
{ {
return uow.Warnings.ForId(gid, userId); return uow._context.Warnings.ForId(gid, userId);
} }
} }
@@ -263,11 +265,11 @@ WHERE GuildId={guildId}
{ {
if (index == 0) if (index == 0)
{ {
await uow.Warnings.ForgiveAll(guildId, userId, moderator); await uow._context.Warnings.ForgiveAll(guildId, userId, moderator);
} }
else else
{ {
toReturn = uow.Warnings.Forgive(guildId, userId, moderator, index - 1); toReturn = uow._context.Warnings.Forgive(guildId, userId, moderator, index - 1);
} }
uow.SaveChanges(); uow.SaveChanges();
} }

View File

@@ -10,6 +10,7 @@ using NadekoBot.Core.Services;
using NadekoBot.Core.Services.Database.Models; using NadekoBot.Core.Services.Database.Models;
using NadekoBot.Extensions; using NadekoBot.Extensions;
using NadekoBot.Modules; using NadekoBot.Modules;
using NadekoBot.Modules.Music;
using NadekoBot.Modules.Music.Services; using NadekoBot.Modules.Music.Services;
using Serilog; using Serilog;
@@ -55,7 +56,7 @@ namespace NadekoBot.Core.Modules.Music
using (var uow = _db.GetDbContext()) using (var uow = _db.GetDbContext())
{ {
playlists = uow.MusicPlaylists.GetPlaylistsOnPage(num); playlists = uow._context.MusicPlaylists.GetPlaylistsOnPage(num);
} }
var embed = new EmbedBuilder() var embed = new EmbedBuilder()
@@ -75,13 +76,13 @@ namespace NadekoBot.Core.Modules.Music
{ {
using (var uow = _db.GetDbContext()) using (var uow = _db.GetDbContext())
{ {
var pl = uow.MusicPlaylists.GetById(id); var pl = uow._context.MusicPlaylists.FirstOrDefault(x => x.Id == id);
if (pl != null) if (pl != null)
{ {
if (_creds.IsOwner(ctx.User) || pl.AuthorId == ctx.User.Id) if (_creds.IsOwner(ctx.User) || pl.AuthorId == ctx.User.Id)
{ {
uow.MusicPlaylists.Remove(pl); uow._context.MusicPlaylists.Remove(pl);
await uow.SaveChangesAsync(); await uow.SaveChangesAsync();
success = true; success = true;
} }
@@ -109,7 +110,7 @@ namespace NadekoBot.Core.Modules.Music
MusicPlaylist mpl; MusicPlaylist mpl;
using (var uow = _db.GetDbContext()) using (var uow = _db.GetDbContext())
{ {
mpl = uow.MusicPlaylists.GetWithSongs(id); mpl = uow._context.MusicPlaylists.GetWithSongs(id);
} }
await ctx.SendPaginatedConfirmAsync(page, (cur) => await ctx.SendPaginatedConfirmAsync(page, (cur) =>
@@ -155,7 +156,7 @@ namespace NadekoBot.Core.Modules.Music
AuthorId = ctx.User.Id, AuthorId = ctx.User.Id,
Songs = songs.ToList(), Songs = songs.ToList(),
}; };
uow.MusicPlaylists.Add(playlist); uow._context.MusicPlaylists.Add(playlist);
await uow.SaveChangesAsync(); await uow.SaveChangesAsync();
} }
@@ -207,7 +208,7 @@ namespace NadekoBot.Core.Modules.Music
MusicPlaylist mpl; MusicPlaylist mpl;
using (var uow = _db.GetDbContext()) using (var uow = _db.GetDbContext())
{ {
mpl = uow.MusicPlaylists.GetWithSongs(id); mpl = uow._context.MusicPlaylists.GetWithSongs(id);
} }
if (mpl == null) if (mpl == null)

View File

@@ -11,10 +11,8 @@ namespace NadekoBot.Core.Services.Database
IQuoteRepository Quotes { get; } IQuoteRepository Quotes { get; }
IGuildConfigRepository GuildConfigs { get; } IGuildConfigRepository GuildConfigs { get; }
ICustomReactionRepository CustomReactions { get; } ICustomReactionRepository CustomReactions { get; }
IMusicPlaylistRepository MusicPlaylists { get; }
IWaifuRepository Waifus { get; } IWaifuRepository Waifus { get; }
IDiscordUserRepository DiscordUsers { get; } IDiscordUserRepository DiscordUsers { get; }
IWarningsRepository Warnings { get; }
IXpRepository Xp { get; } IXpRepository Xp { get; }
int SaveChanges(); int SaveChanges();

View File

@@ -1,11 +0,0 @@
using NadekoBot.Core.Services.Database.Models;
using System.Collections.Generic;
namespace NadekoBot.Core.Services.Database.Repositories
{
public interface IMusicPlaylistRepository : IRepository<MusicPlaylist>
{
List<MusicPlaylist> GetPlaylistsOnPage(int num);
MusicPlaylist GetWithSongs(int id);
}
}

View File

@@ -1,13 +0,0 @@
using NadekoBot.Core.Services.Database.Models;
using System.Threading.Tasks;
namespace NadekoBot.Core.Services.Database.Repositories
{
public interface IWarningsRepository : IRepository<Warning>
{
Warning[] ForId(ulong guildId, ulong userId);
Task ForgiveAll(ulong guildId, ulong userId, string moderator);
bool Forgive(ulong guildId, ulong userId, string moderator, int index);
Warning[] GetForGuild(ulong id);
}
}

View File

@@ -25,7 +25,7 @@ namespace NadekoBot.Modules.Xp.Common
public static ClubInfo GetByMember(this DbSet<ClubInfo> clubs, ulong userId) public static ClubInfo GetByMember(this DbSet<ClubInfo> clubs, ulong userId)
=> Include(clubs).FirstOrDefault(c => c.Users.Any(u => u.UserId == userId)); => Include(clubs).FirstOrDefault(c => c.Users.Any(u => u.UserId == userId));
public static ClubInfo? GetByName(this DbSet<ClubInfo> clubs, string name, int discrim) public static ClubInfo GetByName(this DbSet<ClubInfo> clubs, string name, int discrim)
=> Include(clubs).FirstOrDefault(c => c.Name.ToUpper() == name.ToUpper() && c.Discrim == discrim); => Include(clubs).FirstOrDefault(c => c.Name.ToUpper() == name.ToUpper() && c.Discrim == discrim);
public static int GetNextDiscrim(this DbSet<ClubInfo> clubs, string name) public static int GetNextDiscrim(this DbSet<ClubInfo> clubs, string name)

View File

@@ -4,28 +4,26 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
namespace NadekoBot.Core.Services.Database.Repositories.Impl namespace NadekoBot.Modules.Music
{ {
public class MusicPlaylistRepository : Repository<MusicPlaylist>, IMusicPlaylistRepository public static class MusicPlaylistExtensions
{ {
public MusicPlaylistRepository(DbContext context) : base(context) public static List<MusicPlaylist> GetPlaylistsOnPage(this DbSet<MusicPlaylist> playlists, int num)
{
}
public List<MusicPlaylist> GetPlaylistsOnPage(int num)
{ {
if (num < 1) if (num < 1)
throw new IndexOutOfRangeException(); throw new IndexOutOfRangeException();
return _set.AsQueryable() return playlists
.AsQueryable()
.Skip((num - 1) * 20) .Skip((num - 1) * 20)
.Take(20) .Take(20)
.Include(pl => pl.Songs) .Include(pl => pl.Songs)
.ToList(); .ToList();
} }
public MusicPlaylist GetWithSongs(int id) => public static MusicPlaylist GetWithSongs(this DbSet<MusicPlaylist> playlists, int id) =>
_set.Include(mpl => mpl.Songs) playlists
.Include(mpl => mpl.Songs)
.FirstOrDefault(mpl => mpl.Id == id); .FirstOrDefault(mpl => mpl.Id == id);
} }
} }

View File

@@ -4,28 +4,25 @@ using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using System; using System;
namespace NadekoBot.Core.Services.Database.Repositories.Impl namespace NadekoBot.Modules.Administration.Common
{ {
public class WarningsRepository : Repository<Warning>, IWarningsRepository public static class WarningExtensions
{ {
public WarningsRepository(DbContext context) : base(context) public static Warning[] ForId(this DbSet<Warning> warnings, ulong guildId, ulong userId)
{ {
} var query = warnings.AsQueryable()
.Where(x => x.GuildId == guildId && x.UserId == userId)
public Warning[] ForId(ulong guildId, ulong userId)
{
var query = _set.AsQueryable().Where(x => x.GuildId == guildId && x.UserId == userId)
.OrderByDescending(x => x.DateAdded); .OrderByDescending(x => x.DateAdded);
return query.ToArray(); return query.ToArray();
} }
public bool Forgive(ulong guildId, ulong userId, string mod, int index) public static bool Forgive(this DbSet<Warning> warnings, ulong guildId, ulong userId, string mod, int index)
{ {
if (index < 0) if (index < 0)
throw new ArgumentOutOfRangeException(nameof(index)); throw new ArgumentOutOfRangeException(nameof(index));
var warn = _set.AsQueryable().Where(x => x.GuildId == guildId && x.UserId == userId) var warn = warnings.AsQueryable().Where(x => x.GuildId == guildId && x.UserId == userId)
.OrderByDescending(x => x.DateAdded) .OrderByDescending(x => x.DateAdded)
.Skip(index) .Skip(index)
.FirstOrDefault(); .FirstOrDefault();
@@ -38,9 +35,9 @@ namespace NadekoBot.Core.Services.Database.Repositories.Impl
return true; return true;
} }
public async Task ForgiveAll(ulong guildId, ulong userId, string mod) public static async Task ForgiveAll(this DbSet<Warning> warnings, ulong guildId, ulong userId, string mod)
{ {
await _set.AsQueryable().Where(x => x.GuildId == guildId && x.UserId == userId) await warnings.AsQueryable().Where(x => x.GuildId == guildId && x.UserId == userId)
.ForEachAsync(x => .ForEachAsync(x =>
{ {
if (x.Forgiven != true) if (x.Forgiven != true)
@@ -51,9 +48,9 @@ namespace NadekoBot.Core.Services.Database.Repositories.Impl
}); });
} }
public Warning[] GetForGuild(ulong id) public static Warning[] GetForGuild(this DbSet<Warning> warnings, ulong id)
{ {
return _set.AsQueryable().Where(x => x.GuildId == id).ToArray(); return warnings.AsQueryable().Where(x => x.GuildId == id).ToArray();
} }
} }
} }

View File

@@ -15,9 +15,6 @@ namespace NadekoBot.Core.Services.Database
private IGuildConfigRepository _guildConfigs; private IGuildConfigRepository _guildConfigs;
public IGuildConfigRepository GuildConfigs => _guildConfigs ?? (_guildConfigs = new GuildConfigRepository(_context)); public IGuildConfigRepository GuildConfigs => _guildConfigs ?? (_guildConfigs = new GuildConfigRepository(_context));
private IMusicPlaylistRepository _musicPlaylists;
public IMusicPlaylistRepository MusicPlaylists => _musicPlaylists ?? (_musicPlaylists = new MusicPlaylistRepository(_context));
private ICustomReactionRepository _customReactions; private ICustomReactionRepository _customReactions;
public ICustomReactionRepository CustomReactions => _customReactions ?? (_customReactions = new CustomReactionsRepository(_context)); public ICustomReactionRepository CustomReactions => _customReactions ?? (_customReactions = new CustomReactionsRepository(_context));
@@ -27,9 +24,6 @@ namespace NadekoBot.Core.Services.Database
private IDiscordUserRepository _discordUsers; private IDiscordUserRepository _discordUsers;
public IDiscordUserRepository DiscordUsers => _discordUsers ?? (_discordUsers = new DiscordUserRepository(_context)); public IDiscordUserRepository DiscordUsers => _discordUsers ?? (_discordUsers = new DiscordUserRepository(_context));
private IWarningsRepository _warnings;
public IWarningsRepository Warnings => _warnings ?? (_warnings = new WarningsRepository(_context));
private IXpRepository _xp; private IXpRepository _xp;
public IXpRepository Xp => _xp ?? (_xp = new XpRepository(_context)); public IXpRepository Xp => _xp ?? (_xp = new XpRepository(_context));