Fixed permissions duplication bug WOOHOO
This commit is contained in:
parent
7f7c53af34
commit
60dda075a5
@ -59,7 +59,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
{
|
{
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
var config = uow.GuildConfigs.For(Context.Guild.Id, set => set.Include(x => x.Permissions));
|
var config = uow.GuildConfigs.GcWithPermissionsv2For(Context.Guild.Id);
|
||||||
config.Permissions = Permissionv2.GetDefaultPermlist;
|
config.Permissions = Permissionv2.GetDefaultPermlist;
|
||||||
await uow.CompleteAsync();
|
await uow.CompleteAsync();
|
||||||
UpdateCache(config);
|
UpdateCache(config);
|
||||||
|
@ -87,7 +87,7 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
if (i % 3 == 0)
|
if (i % 3 == 0)
|
||||||
log.Info("Migrating Permissions #" + i + " - GuildId: " + oc.Key);
|
log.Info("Migrating Permissions #" + i + " - GuildId: " + oc.Key);
|
||||||
i++;
|
i++;
|
||||||
var gc = uow.GuildConfigs.For(oc.Key, set => set.Include(x => x.Permissions));
|
var gc = uow.GuildConfigs.GcWithPermissionsv2For(oc.Key);
|
||||||
|
|
||||||
var oldPerms = oc.Value.RootPermission.AsEnumerable().Reverse().ToList();
|
var oldPerms = oc.Value.RootPermission.AsEnumerable().Reverse().ToList();
|
||||||
uow._context.Set<Permission>().RemoveRange(oldPerms);
|
uow._context.Set<Permission>().RemoveRange(oldPerms);
|
||||||
@ -126,7 +126,7 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
{
|
{
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
var config = uow.GuildConfigs.For(guildId, set => set.Include(x => x.Permissions));
|
var config = uow.GuildConfigs.GcWithPermissionsv2For(guildId);
|
||||||
//var orderedPerms = new PermissionsCollection<Permissionv2>(config.Permissions);
|
//var orderedPerms = new PermissionsCollection<Permissionv2>(config.Permissions);
|
||||||
var max = config.Permissions.Max(x => x.Index); //have to set its index to be the highest
|
var max = config.Permissions.Max(x => x.Index); //have to set its index to be the highest
|
||||||
foreach (var perm in perms)
|
foreach (var perm in perms)
|
||||||
@ -161,7 +161,7 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
{
|
{
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
var config = uow.GuildConfigs.For(Context.Guild.Id, set => set.Include(x => x.Permissions));
|
var config = uow.GuildConfigs.GcWithPermissionsv2For(Context.Guild.Id);
|
||||||
config.VerbosePermissions = action.Value;
|
config.VerbosePermissions = action.Value;
|
||||||
await uow.CompleteAsync().ConfigureAwait(false);
|
await uow.CompleteAsync().ConfigureAwait(false);
|
||||||
UpdateCache(config);
|
UpdateCache(config);
|
||||||
@ -185,7 +185,7 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
|
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
var config = uow.GuildConfigs.For(Context.Guild.Id, set => set);
|
var config = uow.GuildConfigs.GcWithPermissionsv2For(Context.Guild.Id);
|
||||||
if (role == null)
|
if (role == null)
|
||||||
{
|
{
|
||||||
await ReplyConfirmLocalized("permrole", Format.Bold(config.PermissionRole)).ConfigureAwait(false);
|
await ReplyConfirmLocalized("permrole", Format.Bold(config.PermissionRole)).ConfigureAwait(false);
|
||||||
@ -247,7 +247,7 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
Permissionv2 p;
|
Permissionv2 p;
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
var config = uow.GuildConfigs.For(Context.Guild.Id, set => set.Include(x => x.Permissions));
|
var config = uow.GuildConfigs.GcWithPermissionsv2For(Context.Guild.Id);
|
||||||
var permsCol = new PermissionsCollection<Permissionv2>(config.Permissions);
|
var permsCol = new PermissionsCollection<Permissionv2>(config.Permissions);
|
||||||
p = permsCol[index];
|
p = permsCol[index];
|
||||||
permsCol.RemoveAt(index);
|
permsCol.RemoveAt(index);
|
||||||
@ -278,7 +278,7 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
Permissionv2 fromPerm;
|
Permissionv2 fromPerm;
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
var config = uow.GuildConfigs.For(Context.Guild.Id, set => set.Include(x => x.Permissions));
|
var config = uow.GuildConfigs.GcWithPermissionsv2For(Context.Guild.Id);
|
||||||
var permsCol = new PermissionsCollection<Permissionv2>(config.Permissions);
|
var permsCol = new PermissionsCollection<Permissionv2>(config.Permissions);
|
||||||
|
|
||||||
var fromFound = from < permsCol.Count;
|
var fromFound = from < permsCol.Count;
|
||||||
|
@ -423,7 +423,7 @@ namespace NadekoBot.Services
|
|||||||
{
|
{
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
var config = uow.GuildConfigs.For(context.Guild.Id, set => set.Include(x => x.Permissions));
|
var config = uow.GuildConfigs.GcWithPermissionsv2For(context.Guild.Id);
|
||||||
Permissions.UpdateCache(config);
|
Permissions.UpdateCache(config);
|
||||||
}
|
}
|
||||||
Permissions.Cache.TryGetValue(context.Guild.Id, out pc);
|
Permissions.Cache.TryGetValue(context.Guild.Id, out pc);
|
||||||
|
@ -15,5 +15,6 @@ namespace NadekoBot.Services.Database.Repositories
|
|||||||
IEnumerable<FollowedStream> GetAllFollowedStreams();
|
IEnumerable<FollowedStream> GetAllFollowedStreams();
|
||||||
void SetCleverbotEnabled(ulong id, bool cleverbotEnabled);
|
void SetCleverbotEnabled(ulong id, bool cleverbotEnabled);
|
||||||
IEnumerable<GuildConfig> Permissionsv2ForAll();
|
IEnumerable<GuildConfig> Permissionsv2ForAll();
|
||||||
|
GuildConfig GcWithPermissionsv2For(ulong guildId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,19 +67,25 @@ namespace NadekoBot.Services.Database.Repositories.Impl
|
|||||||
}));
|
}));
|
||||||
_context.SaveChanges();
|
_context.SaveChanges();
|
||||||
}
|
}
|
||||||
else if (config.Permissions == null)
|
|
||||||
{
|
|
||||||
config.Permissions = Permissionv2.GetDefaultPermlist;
|
|
||||||
_context.SaveChanges();
|
|
||||||
}
|
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GuildConfig LogSettingsFor(ulong guildId)
|
public GuildConfig LogSettingsFor(ulong guildId)
|
||||||
{
|
{
|
||||||
return _set.Include(gc => gc.LogSetting)
|
var config = _set.Include(gc => gc.LogSetting)
|
||||||
.ThenInclude(gc => gc.IgnoredChannels)
|
.ThenInclude(gc => gc.IgnoredChannels)
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
|
|
||||||
|
if (config == null)
|
||||||
|
{
|
||||||
|
_set.Add((config = new GuildConfig
|
||||||
|
{
|
||||||
|
GuildId = guildId,
|
||||||
|
Permissions = Permissionv2.GetDefaultPermlist
|
||||||
|
}));
|
||||||
|
_context.SaveChanges();
|
||||||
|
}
|
||||||
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<GuildConfig> OldPermissionsForAll()
|
public IEnumerable<GuildConfig> OldPermissionsForAll()
|
||||||
@ -108,6 +114,31 @@ namespace NadekoBot.Services.Database.Repositories.Impl
|
|||||||
return query.ToList();
|
return query.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GuildConfig GcWithPermissionsv2For(ulong guildId)
|
||||||
|
{
|
||||||
|
var config = _set
|
||||||
|
.Where(gc => gc.GuildId == guildId)
|
||||||
|
.Include(gc => gc.Permissions)
|
||||||
|
.FirstOrDefault();
|
||||||
|
|
||||||
|
if (config == null) // if there is no guildconfig, create new one
|
||||||
|
{
|
||||||
|
_set.Add((config = new GuildConfig
|
||||||
|
{
|
||||||
|
GuildId = guildId,
|
||||||
|
Permissions = Permissionv2.GetDefaultPermlist
|
||||||
|
}));
|
||||||
|
_context.SaveChanges();
|
||||||
|
}
|
||||||
|
else if (config.Permissions == null || !config.Permissions.Any()) // if no perms, add default ones
|
||||||
|
{
|
||||||
|
config.Permissions = Permissionv2.GetDefaultPermlist;
|
||||||
|
_context.SaveChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
public IEnumerable<FollowedStream> GetAllFollowedStreams() =>
|
public IEnumerable<FollowedStream> GetAllFollowedStreams() =>
|
||||||
_set.Include(gc => gc.FollowedStreams)
|
_set.Include(gc => gc.FollowedStreams)
|
||||||
.SelectMany(gc => gc.FollowedStreams)
|
.SelectMany(gc => gc.FollowedStreams)
|
||||||
|
Loading…
Reference in New Issue
Block a user