public static async Task ClearGuildQueue(this QueueDBContext ctx, ulong guildId) { var them = await GetGuildQueue(ctx, guildId); ctx.QueueEntries.RemoveRange(them); await ctx.SaveChangesAsync(); }
private static async Task ReorderQueue(QueueDBContext ctx, ulong guildId, List <QueueEntryInfo> queueEntries) { queueEntries.Reverse(); await ClearGuildQueue(ctx, guildId); for (int i = 0; i < queueEntries.Count; i++) { queueEntries[i].Position = i; } await ctx.AddRangeAsync(queueEntries); await ctx.SaveChangesAsync(); }
public static async Task <QueueEntryInfo> DeleteFromGuildQueue(this QueueDBContext ctx, ulong guildId, int position) { var queue = await GetGuildQueue(ctx, guildId); var deletedEntry = queue[0]; queue.RemoveAt(0); await ReorderQueue(ctx, guildId, queue); await ctx.SaveChangesAsync(); return(deletedEntry); }
public static async Task <QueueEntryInfo> AddToGuildQueue(this QueueDBContext ctx, ulong guildId, ulong userId, ServiceResult queueEntry) { var baseDB = new DBQueueEntryJson(queueEntry); var baseDBJson = JsonConvert.SerializeObject(baseDB); var baseBytes = Encoding.UTF8.GetBytes(baseDBJson); var queueCount = await ctx.QueueEntries.Where(x => x.GuildId == guildId).CountAsync(); var items = await ctx.QueueEntries.AddAsync(new QueueEntryInfo { AddedBy = userId, AdditionTime = DateTime.Now, DBTrackInfoRaw = Convert.ToBase64String(baseBytes), GuildId = guildId, Position = queueCount }); await ctx.SaveChangesAsync(); items.Entity.DBTrackInfo = new DBQueueEntryJson(queueEntry); return(items.Entity); }
public static async Task <QueueEntryInfo> InsertToGuildQueue(this QueueDBContext ctx, ulong guildId, ulong userId, ServiceResult queueEntry, int position) { var queue = await GetGuildQueue(ctx, guildId); var baseDB = new DBQueueEntryJson(queueEntry); var baseDBJson = JsonConvert.SerializeObject(baseDB); var baseBytes = Encoding.UTF8.GetBytes(baseDBJson); var item = new QueueEntryInfo { AddedBy = userId, AdditionTime = DateTime.Now, DBTrackInfoRaw = Convert.ToBase64String(baseBytes), GuildId = guildId, Position = -1 }; queue.Insert(position, item); await ReorderQueue(ctx, guildId, queue); await ctx.SaveChangesAsync(); item.DBTrackInfo = new DBQueueEntryJson(queueEntry); return(item); }