playlist stuff
This commit is contained in:
		@@ -8,7 +8,7 @@ using NadekoBot.Services.Database.Impl;
 | 
				
			|||||||
namespace NadekoBot.Migrations
 | 
					namespace NadekoBot.Migrations
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [DbContext(typeof(NadekoSqliteContext))]
 | 
					    [DbContext(typeof(NadekoSqliteContext))]
 | 
				
			||||||
    [Migration("20160930001917_first")]
 | 
					    [Migration("20161001173937_first")]
 | 
				
			||||||
    partial class first
 | 
					    partial class first
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
 | 
					        protected override void BuildTargetModel(ModelBuilder modelBuilder)
 | 
				
			||||||
@@ -357,6 +357,22 @@ namespace NadekoBot.Migrations
 | 
				
			|||||||
                    b.ToTable("ModulePrefixes");
 | 
					                    b.ToTable("ModulePrefixes");
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Author");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<ulong>("AuthorId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Name");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("MusicPlaylists");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b =>
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b =>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    b.Property<int>("Id")
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
@@ -398,6 +414,30 @@ namespace NadekoBot.Migrations
 | 
				
			|||||||
                    b.ToTable("PlayingStatus");
 | 
					                    b.ToTable("PlayingStatus");
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
 | 
					                        .ValueGeneratedOnAdd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int?>("MusicPlaylistId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Provider");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<int>("ProviderType");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Query");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Title");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.Property<string>("Uri");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasKey("Id");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.HasIndex("MusicPlaylistId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    b.ToTable("PlaylistSong");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b =>
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b =>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    b.Property<int>("Id")
 | 
					                    b.Property<int>("Id")
 | 
				
			||||||
@@ -589,6 +629,13 @@ namespace NadekoBot.Migrations
 | 
				
			|||||||
                        .HasForeignKey("BotConfigId");
 | 
					                        .HasForeignKey("BotConfigId");
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist")
 | 
				
			||||||
 | 
					                        .WithMany("Songs")
 | 
				
			||||||
 | 
					                        .HasForeignKey("MusicPlaylistId");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b =>
 | 
					            modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b =>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    b.HasOne("NadekoBot.Services.Database.Models.BotConfig")
 | 
					                    b.HasOne("NadekoBot.Services.Database.Models.BotConfig")
 | 
				
			||||||
@@ -122,6 +122,21 @@ namespace NadekoBot.Migrations
 | 
				
			|||||||
                    table.PrimaryKey("PK_LogSettings", x => x.Id);
 | 
					                    table.PrimaryKey("PK_LogSettings", x => x.Id);
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            migrationBuilder.CreateTable(
 | 
				
			||||||
 | 
					                name: "MusicPlaylists",
 | 
				
			||||||
 | 
					                columns: table => new
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Id = table.Column<int>(nullable: false)
 | 
				
			||||||
 | 
					                        .Annotation("Autoincrement", true),
 | 
				
			||||||
 | 
					                    Author = table.Column<string>(nullable: true),
 | 
				
			||||||
 | 
					                    AuthorId = table.Column<ulong>(nullable: false),
 | 
				
			||||||
 | 
					                    Name = table.Column<string>(nullable: true)
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                constraints: table =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    table.PrimaryKey("PK_MusicPlaylists", x => x.Id);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            migrationBuilder.CreateTable(
 | 
					            migrationBuilder.CreateTable(
 | 
				
			||||||
                name: "Permission",
 | 
					                name: "Permission",
 | 
				
			||||||
                columns: table => new
 | 
					                columns: table => new
 | 
				
			||||||
@@ -390,6 +405,30 @@ namespace NadekoBot.Migrations
 | 
				
			|||||||
                        onDelete: ReferentialAction.Restrict);
 | 
					                        onDelete: ReferentialAction.Restrict);
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            migrationBuilder.CreateTable(
 | 
				
			||||||
 | 
					                name: "PlaylistSong",
 | 
				
			||||||
 | 
					                columns: table => new
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Id = table.Column<int>(nullable: false)
 | 
				
			||||||
 | 
					                        .Annotation("Autoincrement", true),
 | 
				
			||||||
 | 
					                    MusicPlaylistId = table.Column<int>(nullable: true),
 | 
				
			||||||
 | 
					                    Provider = table.Column<string>(nullable: true),
 | 
				
			||||||
 | 
					                    ProviderType = table.Column<int>(nullable: false),
 | 
				
			||||||
 | 
					                    Query = table.Column<string>(nullable: true),
 | 
				
			||||||
 | 
					                    Title = table.Column<string>(nullable: true),
 | 
				
			||||||
 | 
					                    Uri = table.Column<string>(nullable: true)
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                constraints: table =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    table.PrimaryKey("PK_PlaylistSong", x => x.Id);
 | 
				
			||||||
 | 
					                    table.ForeignKey(
 | 
				
			||||||
 | 
					                        name: "FK_PlaylistSong_MusicPlaylists_MusicPlaylistId",
 | 
				
			||||||
 | 
					                        column: x => x.MusicPlaylistId,
 | 
				
			||||||
 | 
					                        principalTable: "MusicPlaylists",
 | 
				
			||||||
 | 
					                        principalColumn: "Id",
 | 
				
			||||||
 | 
					                        onDelete: ReferentialAction.Restrict);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            migrationBuilder.CreateTable(
 | 
					            migrationBuilder.CreateTable(
 | 
				
			||||||
                name: "GuildConfigs",
 | 
					                name: "GuildConfigs",
 | 
				
			||||||
                columns: table => new
 | 
					                columns: table => new
 | 
				
			||||||
@@ -535,6 +574,11 @@ namespace NadekoBot.Migrations
 | 
				
			|||||||
                table: "PlayingStatus",
 | 
					                table: "PlayingStatus",
 | 
				
			||||||
                column: "BotConfigId");
 | 
					                column: "BotConfigId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            migrationBuilder.CreateIndex(
 | 
				
			||||||
 | 
					                name: "IX_PlaylistSong_MusicPlaylistId",
 | 
				
			||||||
 | 
					                table: "PlaylistSong",
 | 
				
			||||||
 | 
					                column: "MusicPlaylistId");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            migrationBuilder.CreateIndex(
 | 
					            migrationBuilder.CreateIndex(
 | 
				
			||||||
                name: "IX_RaceAnimals_BotConfigId",
 | 
					                name: "IX_RaceAnimals_BotConfigId",
 | 
				
			||||||
                table: "RaceAnimals",
 | 
					                table: "RaceAnimals",
 | 
				
			||||||
@@ -588,6 +632,9 @@ namespace NadekoBot.Migrations
 | 
				
			|||||||
            migrationBuilder.DropTable(
 | 
					            migrationBuilder.DropTable(
 | 
				
			||||||
                name: "PlayingStatus");
 | 
					                name: "PlayingStatus");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            migrationBuilder.DropTable(
 | 
				
			||||||
 | 
					                name: "PlaylistSong");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            migrationBuilder.DropTable(
 | 
					            migrationBuilder.DropTable(
 | 
				
			||||||
                name: "Quotes");
 | 
					                name: "Quotes");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -612,6 +659,9 @@ namespace NadekoBot.Migrations
 | 
				
			|||||||
            migrationBuilder.DropTable(
 | 
					            migrationBuilder.DropTable(
 | 
				
			||||||
                name: "GuildConfigs");
 | 
					                name: "GuildConfigs");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            migrationBuilder.DropTable(
 | 
				
			||||||
 | 
					                name: "MusicPlaylists");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            migrationBuilder.DropTable(
 | 
					            migrationBuilder.DropTable(
 | 
				
			||||||
                name: "BotConfig");
 | 
					                name: "BotConfig");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -571,7 +571,7 @@ namespace NadekoBot.Modules.Music
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (mpl == null)
 | 
					            if (mpl == null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                await channel.SendMessageAsync("Can't find playlist with that ID").ConfigureAwait(false);
 | 
					                await channel.SendMessageAsync("`Can't find playlist with that ID`").ConfigureAwait(false);
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -619,26 +619,34 @@ namespace NadekoBot.Modules.Music
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            bool success = false;
 | 
					            bool success = false;
 | 
				
			||||||
            MusicPlaylist pl = null;
 | 
					            MusicPlaylist pl = null;
 | 
				
			||||||
            using (var uow = DbHandler.UnitOfWork())
 | 
					            try
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                pl = uow.MusicPlaylists.Get(id);
 | 
					                using (var uow = DbHandler.UnitOfWork())
 | 
				
			||||||
 | 
					 | 
				
			||||||
                if (pl != null)
 | 
					 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    if (NadekoBot.Credentials.IsOwner(umsg.Author) || pl.AuthorId == umsg.Author.Id)
 | 
					                    pl = uow.MusicPlaylists.Get(id);
 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        uow.MusicPlaylists.Remove(pl.Id);
 | 
					 | 
				
			||||||
                        await uow.CompleteAsync().ConfigureAwait(false);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    else
 | 
					 | 
				
			||||||
                        success = false;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (success)
 | 
					                    if (pl != null)
 | 
				
			||||||
                await channel.SendMessageAsync("Failed to delete that playlist. It either doesn't exist, or you are not its author.").ConfigureAwait(false);
 | 
					                    {
 | 
				
			||||||
            else
 | 
					                        if (NadekoBot.Credentials.IsOwner(umsg.Author) || pl.AuthorId == umsg.Author.Id)
 | 
				
			||||||
                await channel.SendMessageAsync("`Playlist successfully deleted.`").ConfigureAwait(false);
 | 
					                        {
 | 
				
			||||||
 | 
					                            uow.MusicPlaylists.Remove(pl);
 | 
				
			||||||
 | 
					                            await uow.CompleteAsync().ConfigureAwait(false);
 | 
				
			||||||
 | 
					                            success = true;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        else
 | 
				
			||||||
 | 
					                            success = false;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (!success)
 | 
				
			||||||
 | 
					                    await channel.SendMessageAsync("Failed to delete that playlist. It either doesn't exist, or you are not its author.").ConfigureAwait(false);
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                    await channel.SendMessageAsync("`Playlist successfully deleted.`").ConfigureAwait(false);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception ex)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Console.WriteLine(ex);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias]
 | 
					        [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias]
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										16
									
								
								src/NadekoBot/Services/Database/Models/MusicPlaylist.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/NadekoBot/Services/Database/Models/MusicPlaylist.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace NadekoBot.Services.Database.Models
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class MusicPlaylist : DbEntity
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public string Name { get; set; }
 | 
				
			||||||
 | 
					        public string Author { get; set; }
 | 
				
			||||||
 | 
					        public ulong AuthorId { get; set; }
 | 
				
			||||||
 | 
					        public List<PlaylistSong> Songs { get; set; }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								src/NadekoBot/Services/Database/Models/PlaylistSong.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/NadekoBot/Services/Database/Models/PlaylistSong.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					using NadekoBot.Modules.Music.Classes;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace NadekoBot.Services.Database.Models
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class PlaylistSong : DbEntity
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public string Provider { get; set; }
 | 
				
			||||||
 | 
					        public MusicType ProviderType { get; set; }
 | 
				
			||||||
 | 
					        public string Title { get; set; }
 | 
				
			||||||
 | 
					        public string Uri { get; set; }
 | 
				
			||||||
 | 
					        public string Query { get; set; }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -187,7 +187,7 @@ namespace NadekoBot.Services.Database
 | 
				
			|||||||
            permissionEntity
 | 
					            permissionEntity
 | 
				
			||||||
                .HasOne(p => p.Next)
 | 
					                .HasOne(p => p.Next)
 | 
				
			||||||
                .WithOne(p => p.Previous);
 | 
					                .WithOne(p => p.Previous);
 | 
				
			||||||
                
 | 
					
 | 
				
			||||||
            #endregion
 | 
					            #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            #region LogSettings
 | 
					            #region LogSettings
 | 
				
			||||||
@@ -203,6 +203,17 @@ namespace NadekoBot.Services.Database
 | 
				
			|||||||
            //    .HasMany(ls => ls.IgnoredVoicePresenceChannelIds)
 | 
					            //    .HasMany(ls => ls.IgnoredVoicePresenceChannelIds)
 | 
				
			||||||
            //    .WithOne(ls => ls.LogSetting);
 | 
					            //    .WithOne(ls => ls.LogSetting);
 | 
				
			||||||
            #endregion
 | 
					            #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            #region MusicPlaylists
 | 
				
			||||||
 | 
					            var musicPlaylistEntity = modelBuilder.Entity<MusicPlaylist>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            musicPlaylistEntity
 | 
				
			||||||
 | 
					                .HasMany<PlaylistSong>(p => p.Songs)
 | 
				
			||||||
 | 
					                .WithOne()
 | 
				
			||||||
 | 
					                .OnDelete(Microsoft.EntityFrameworkCore.Metadata.DeleteBehavior.Cascade);
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            #endregion
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        protected abstract override void OnConfiguring(DbContextOptionsBuilder optionsBuilder);
 | 
					        protected abstract override void OnConfiguring(DbContextOptionsBuilder optionsBuilder);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					using NadekoBot.Services.Database.Models;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace NadekoBot.Services.Database.Repositories
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public interface IMusicPlaylistRepository : IRepository<MusicPlaylist>
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        List<MusicPlaylist> GetPlaylistsOnPage(int num);
 | 
				
			||||||
 | 
					        MusicPlaylist GetWithSongs(int id);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					using NadekoBot.Services.Database.Models;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Microsoft.EntityFrameworkCore;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace NadekoBot.Services.Database.Repositories.Impl
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class MusicPlaylistRepository : Repository<MusicPlaylist>, IMusicPlaylistRepository
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public MusicPlaylistRepository(DbContext context) : base(context)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public List<MusicPlaylist> GetPlaylistsOnPage(int num)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (num < 1)
 | 
				
			||||||
 | 
					                throw new IndexOutOfRangeException();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return _set.Skip((num - 1) * 20)
 | 
				
			||||||
 | 
					                .Take(20)
 | 
				
			||||||
 | 
					                .Include(pl => pl.Songs)
 | 
				
			||||||
 | 
					                .ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public MusicPlaylist GetWithSongs(int id) => 
 | 
				
			||||||
 | 
					            _set.Include(mpl => mpl.Songs)
 | 
				
			||||||
 | 
					                .FirstOrDefault(mpl => mpl.Id == id);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user