public static async Task ClearGuildQueue(this QueueDBContext ctx, ulong guildId) { var them = await GetGuildQueue(ctx, guildId); ctx.QueueEntries.RemoveRange(them); await ctx.SaveChangesAsync(); }
public MusicInstance(DiscordGuild guild) { Guild = guild; UsedChannel = null; Playstate = Playstate.NotPlaying; RepeatMode = RepeatMode.Off; RepeatAllPos = 0; ShuffleMode = ShuffleMode.Off; DbContext = new QueueDBContext(); }
public static async Task <QueueEntryInfo> MoveFromToGuildQueue(this QueueDBContext ctx, ulong guildId, int oldPosition, int newPosition) { var queue = await GetGuildQueue(ctx, guildId); var temp = queue[newPosition]; queue[newPosition] = queue[oldPosition]; queue[oldPosition] = temp; await ReorderQueue(ctx, guildId, queue); return(queue[newPosition]); }
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 <List <QueueEntryInfo> > GetGuildQueue(this QueueDBContext ctx, ulong guildId) { var items = await ctx.QueueEntries.Where(x => x.GuildId == guildId).ToListAsync(); var ordered = items.OrderBy(x => x.Position).ToList(); foreach (var item in ordered) { //Console.WriteLine(item.DBTrackInfoRaw); var rawBytes = Convert.FromBase64String(item.DBTrackInfoRaw); var rawJson = Encoding.UTF8.GetString(rawBytes); item.DBTrackInfo = JsonConvert.DeserializeObject <DBQueueEntryJson>(rawJson); } return(ordered); }
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); }
public static async Task <QueueEntryInfo> GetNextSong(this QueueDBContext ctx, ulong guildId, int position) { var queue = await GetGuildQueue(ctx, guildId); return(queue[position]); }
public static async Task <int> GetGuildQueueCount(this QueueDBContext ctx, ulong guildId) { var items = await ctx.QueueEntries.Where(x => x.GuildId == guildId).CountAsync(); return(items); }