async Task CreateNewGuildMembersAsync(Guild guild, GuildCreateEventArgs e, InciteDbContext dbContext) { var members = await e.Guild.GetAllMembersAsync(); var memberDiscordIds = members .AsEnumerable() .Select(x => x.Id); var existingUsers = await dbContext.Users .Where(x => memberDiscordIds .Contains(x.DiscordId)) .ToArrayAsync(); var existingMembers = await dbContext.Members .Include(x => x.User) .Where(x => x.Guild.DiscordId == guild.DiscordId && memberDiscordIds .Contains(x.User.DiscordId)) .ToArrayAsync(); var newUsers = memberDiscordIds .Where(x => !existingUsers .Select(x => x.DiscordId) .Contains(x)) .Select(x => new User() { DiscordId = x }); dbContext.Users.AddRange(newUsers); var newMembers = memberDiscordIds .Where(x => !existingMembers .Select(x => x.User.DiscordId) .Contains(x)) .Select(x => new Member() { Guild = guild, User = dbContext.Users.Local.First(y => y.DiscordId == x) }); dbContext.Members.AddRange(newMembers); }
static void Main(string[] args) { var config = new ConfigurationBuilder() .AddUserSecrets("894aa8f3-8db9-4868-8964-a973da7e7cc8") .AddEnvironmentVariables() .Build(); using var sqlServerDbContext = new InciteDbContext(new DbContextOptionsBuilder <InciteDbContext>() .UseNpgsql(config["ConnectionStrings:SqlServer"], sqlOptions => { sqlOptions.EnableRetryOnFailure(); }).Options); using var postgresDbContext = new InciteDbContext(new DbContextOptionsBuilder <InciteDbContext>() .UseNpgsql(config["ConnectionStrings:Postgres"], sqlOptions => { sqlOptions.EnableRetryOnFailure(); }).Options); postgresDbContext.Database.MigrateAsync().Wait(); postgresDbContext.WowItemClasses.AddRange(sqlServerDbContext.WowItemClasses); postgresDbContext.WowItemSubclasses.AddRange(sqlServerDbContext.WowItemSubclasses); postgresDbContext.WowItems.AddRange(sqlServerDbContext.WowItems); postgresDbContext.WowSpells.AddRange(sqlServerDbContext.WowSpells); postgresDbContext.Users.AddRange(sqlServerDbContext.Users); postgresDbContext.Guilds.AddRange(sqlServerDbContext.Guilds); postgresDbContext.Roles.AddRange(sqlServerDbContext.Roles); postgresDbContext.WowCharacters.AddRange(sqlServerDbContext.WowCharacters); postgresDbContext.WowCharacterProfessions.AddRange(sqlServerDbContext.WowCharacterProfessions); postgresDbContext.Members.AddRange(sqlServerDbContext.Members); postgresDbContext.Events.AddRange(sqlServerDbContext.Events); postgresDbContext.SaveChanges(); }
public MemberCommands(InciteDbContext dbContext) { m_dbContext = dbContext; }
public ServerCommands(InciteDbContext dbContext) { m_dbContext = dbContext; }
public EventCommands(InciteDbContext dbContext, EmojiService emojiService) { m_dbContext = dbContext; m_emojiService = emojiService; }
public EpgpCommands(InciteDbContext dbContext) { m_dbContext = dbContext; }
public WowCharacterCommands(InciteDbContext dbContext) { m_dbContext = dbContext; }
public WowProfessionCommands(InciteDbContext dbContext) { m_dbContext = dbContext; }
public async Task <WowItem> GetOrCreateWowItemAsync(InciteDbContext dbContext, WowHeadItem wowHeadItem, Dictionary <int, WowItem> seenItems) { if (seenItems.ContainsKey(wowHeadItem.Id)) { return(seenItems[wowHeadItem.Id]); } WowItem wowItem = await dbContext.WowItems .FirstOrDefaultAsync(x => x.WowId == wowHeadItem.Id); if (wowItem != null) { seenItems[wowHeadItem.Id] = wowItem; return(wowItem); } WowItemSubclass wowItemSubclass = null; WowItemClass wowItemClass = await dbContext.WowItemClasses .Include(x => x.WowItemSubclasses) .FirstOrDefaultAsync(x => x.WowId == wowHeadItem.ItemClass.Id); if (wowItemClass == null) { wowItemClass = new WowItemClass() { WowId = wowHeadItem.ItemClass.Id, Name = wowHeadItem.ItemClass.Name }; wowItemSubclass = new WowItemSubclass() { WowId = wowHeadItem.ItemSubclass.Id, Name = wowHeadItem.ItemSubclass.Name, WowItemClass = wowItemClass, }; dbContext.WowItemClasses.Add(wowItemClass); dbContext.WowItemSubclasses.Add(wowItemSubclass); } else { wowItemSubclass = wowItemClass.WowItemSubclasses .FirstOrDefault(x => x.WowId == wowHeadItem.ItemSubclass.Id); if (wowItemSubclass == null) { wowItemSubclass = new WowItemSubclass() { WowId = wowHeadItem.ItemSubclass.Id, Name = wowHeadItem.ItemSubclass.Name, WowItemClass = wowItemClass, }; dbContext.WowItemSubclasses.Add(wowItemSubclass); } } wowItem = new WowItem() { WowId = wowHeadItem.Id, Name = wowHeadItem.Name, ItemQuality = (WowItemQuality)wowHeadItem.Quality, WowHeadIcon = wowHeadItem.Icon, WowItemClass = wowItemClass, WowItemSubclass = wowItemSubclass, }; seenItems[wowHeadItem.Id] = wowItem; dbContext.Add(wowItem); if (wowHeadItem.CreatedBy.Count > 0) { foreach (var wowHeadSpell in wowHeadItem.CreatedBy) { WowSpell wowSpell = await dbContext.WowSpells .FirstOrDefaultAsync(x => x.WowId == wowHeadSpell.Id); if (wowSpell == null) { wowSpell = new WowSpell() { WowId = wowHeadSpell.Id, Name = wowHeadSpell.Name, CreatedItem = wowItem, }; dbContext.WowSpells.Add(wowSpell); foreach (var reagent in wowHeadSpell.Reagents) { var wowReagent = new WowReagent() { Count = reagent.Count, WowSpell = wowSpell, WowItem = await GetOrCreateWowItemAsync(dbContext, reagent.Item, seenItems), }; dbContext.WowReagents.Add(wowReagent); } } wowItem.CreatedBy.Add(wowSpell); } } await dbContext.SaveChangesAsync(); return(wowItem); }
public Task <WowItem> GetOrCreateWowItemAsync(InciteDbContext dbContext, WowHeadItem wowHeadItem) { return(GetOrCreateWowItemAsync(dbContext, wowHeadItem, new Dictionary <int, WowItem>())); }
public AdminCommands(InciteDbContext dbContext, GuildCommandPrefixCache guildCommandPrefixCache) { m_dbContext = dbContext; m_guildCommandPrefixCache = guildCommandPrefixCache; }
public GuildCommands(InciteDbContext dbContext) { m_dbContext = dbContext; }