diff --git a/songrequests_blazor/Data/Session.cs b/songrequests_blazor/Data/Session.cs index ceb4f4b..572591e 100644 --- a/songrequests_blazor/Data/Session.cs +++ b/songrequests_blazor/Data/Session.cs @@ -4,11 +4,11 @@ { public int Id { get; set; } + public string Name { get; set; } = "Unbenannte Session"; public string? SessionCode { get; set; } public bool Active { get; set; } public List EnabledLibraries { get; set; } = null!; public List QueuedSongs { get; set; } = null!; - public DateTime Created { get; set; } = DateTime.Now; } } diff --git a/songrequests_blazor/Migrations/20240626183259_AddSessionName.Designer.cs b/songrequests_blazor/Migrations/20240626183259_AddSessionName.Designer.cs new file mode 100644 index 0000000..3704676 --- /dev/null +++ b/songrequests_blazor/Migrations/20240626183259_AddSessionName.Designer.cs @@ -0,0 +1,559 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using songrequests_blazor.Data; + +#nullable disable + +namespace songrequests_blazor.Migrations +{ + [DbContext(typeof(LocalDbContext))] + [Migration("20240626183259_AddSessionName")] + partial class AddSessionName + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "8.0.5"); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles", (string)null); + + b.HasData( + new + { + Id = "fc985a25-19ce-48ed-8443-c845f550960a", + Name = "Administrator", + NormalizedName = "ADMINISTRATOR" + }); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AccessFailedCount") + .HasColumnType("INTEGER"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Discriminator") + .IsRequired() + .HasMaxLength(13) + .HasColumnType("TEXT"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("EmailConfirmed") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnabled") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnd") + .HasColumnType("TEXT"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("PasswordHash") + .HasColumnType("TEXT"); + + b.Property("PhoneNumber") + .HasColumnType("TEXT"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("INTEGER"); + + b.Property("SecurityStamp") + .HasColumnType("TEXT"); + + b.Property("TwoFactorEnabled") + .HasColumnType("INTEGER"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers", (string)null); + + b.HasDiscriminator("Discriminator").HasValue("IdentityUser"); + + b.UseTphMappingStrategy(); + + b.HasData( + new + { + Id = "5c2511d0-6a08-4950-babd-d107996749ba", + AccessFailedCount = 0, + ConcurrencyStamp = "7d7fc619-fde4-408c-8816-f4ed5f68a60e", + Email = "admin@admin.com", + EmailConfirmed = false, + LockoutEnabled = false, + NormalizedEmail = "ADMIN@ADMIN.COM", + NormalizedUserName = "ADMIN@ADMIN.COM", + PasswordHash = "AQAAAAIAAYagAAAAECVwoHKYEXKRa9Sp3UeNNeVSEZOUkCEVkYcF09ZOVlLm9VeDEoX8M9NzwegIk0EWrw==", + PhoneNumberConfirmed = false, + SecurityStamp = "10af871c-53d6-4dfc-9e69-5d3a97d8a016", + TwoFactorEnabled = false, + UserName = "admin@admin.com" + }); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("TEXT"); + + b.Property("ProviderKey") + .HasColumnType("TEXT"); + + b.Property("ProviderDisplayName") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + + b.HasData( + new + { + UserId = "5c2511d0-6a08-4950-babd-d107996749ba", + RoleId = "fc985a25-19ce-48ed-8443-c845f550960a" + }); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("LoginProvider") + .HasColumnType("TEXT"); + + b.Property("Name") + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("QueuedSongs_UserVotes", b => + { + b.Property("UserVotesId") + .HasColumnType("TEXT"); + + b.Property("VotedSongsId") + .HasColumnType("INTEGER"); + + b.HasKey("UserVotesId", "VotedSongsId"); + + b.HasIndex("VotedSongsId"); + + b.ToTable("QueuedSongs_UserVotes"); + }); + + modelBuilder.Entity("Sessions_Libraries", b => + { + b.Property("EnabledLibrariesId") + .HasColumnType("INTEGER"); + + b.Property("UsedInSessionsId") + .HasColumnType("INTEGER"); + + b.HasKey("EnabledLibrariesId", "UsedInSessionsId"); + + b.HasIndex("UsedInSessionsId"); + + b.ToTable("Sessions_Libraries"); + }); + + modelBuilder.Entity("songrequests_blazor.Data.Library", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("ScanPaths") + .HasColumnType("TEXT"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("Libraries"); + }); + + modelBuilder.Entity("songrequests_blazor.Data.QueuedSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Added") + .HasColumnType("TEXT"); + + b.Property("AddedBy_User_ID") + .HasColumnType("TEXT"); + + b.Property("Played") + .HasColumnType("TEXT"); + + b.Property("Position") + .HasColumnType("INTEGER"); + + b.Property("Session_ID") + .HasColumnType("INTEGER"); + + b.Property("Song_ID") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("AddedBy_User_ID"); + + b.HasIndex("Session_ID"); + + b.HasIndex("Song_ID"); + + b.ToTable("QueuedSongs"); + }); + + modelBuilder.Entity("songrequests_blazor.Data.Session", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Active") + .HasColumnType("INTEGER"); + + b.Property("Created") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionCode") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Sessions"); + }); + + modelBuilder.Entity("songrequests_blazor.Data.Song", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Album") + .HasColumnType("TEXT"); + + b.Property("Artist") + .HasColumnType("TEXT"); + + b.Property("Genre") + .HasColumnType("TEXT"); + + b.Property("Length") + .HasColumnType("TEXT"); + + b.Property("Library_ID") + .HasColumnType("INTEGER"); + + b.Property("RequestCount") + .HasColumnType("INTEGER"); + + b.Property("Title") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Uri") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Year") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("Library_ID"); + + b.ToTable("Songs"); + }); + + modelBuilder.Entity("songrequests_blazor.Data.User", b => + { + b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); + + b.HasDiscriminator().HasValue("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("QueuedSongs_UserVotes", b => + { + b.HasOne("songrequests_blazor.Data.User", null) + .WithMany() + .HasForeignKey("UserVotesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("songrequests_blazor.Data.QueuedSong", null) + .WithMany() + .HasForeignKey("VotedSongsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sessions_Libraries", b => + { + b.HasOne("songrequests_blazor.Data.Library", null) + .WithMany() + .HasForeignKey("EnabledLibrariesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("songrequests_blazor.Data.Session", null) + .WithMany() + .HasForeignKey("UsedInSessionsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("songrequests_blazor.Data.QueuedSong", b => + { + b.HasOne("songrequests_blazor.Data.User", "AdddedBy") + .WithMany("AddedSongs") + .HasForeignKey("AddedBy_User_ID") + .HasConstraintName("FK_user_addedsongs"); + + b.HasOne("songrequests_blazor.Data.Session", "Session") + .WithMany("QueuedSongs") + .HasForeignKey("Session_ID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_Session_QueuedSongs"); + + b.HasOne("songrequests_blazor.Data.Song", "Song") + .WithMany("Queued") + .HasForeignKey("Song_ID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_queuedsongs_song"); + + b.Navigation("AdddedBy"); + + b.Navigation("Session"); + + b.Navigation("Song"); + }); + + modelBuilder.Entity("songrequests_blazor.Data.Song", b => + { + b.HasOne("songrequests_blazor.Data.Library", "Library") + .WithMany("Songs") + .HasForeignKey("Library_ID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_library_songs"); + + b.Navigation("Library"); + }); + + modelBuilder.Entity("songrequests_blazor.Data.Library", b => + { + b.Navigation("Songs"); + }); + + modelBuilder.Entity("songrequests_blazor.Data.Session", b => + { + b.Navigation("QueuedSongs"); + }); + + modelBuilder.Entity("songrequests_blazor.Data.Song", b => + { + b.Navigation("Queued"); + }); + + modelBuilder.Entity("songrequests_blazor.Data.User", b => + { + b.Navigation("AddedSongs"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/songrequests_blazor/Migrations/20240626183259_AddSessionName.cs b/songrequests_blazor/Migrations/20240626183259_AddSessionName.cs new file mode 100644 index 0000000..7e64c9e --- /dev/null +++ b/songrequests_blazor/Migrations/20240626183259_AddSessionName.cs @@ -0,0 +1,43 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace songrequests_blazor.Migrations +{ + /// + public partial class AddSessionName : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Name", + table: "Sessions", + type: "TEXT", + nullable: false, + defaultValue: ""); + + migrationBuilder.UpdateData( + table: "AspNetUsers", + keyColumn: "Id", + keyValue: "5c2511d0-6a08-4950-babd-d107996749ba", + columns: new[] { "ConcurrencyStamp", "PasswordHash", "SecurityStamp" }, + values: new object[] { "7d7fc619-fde4-408c-8816-f4ed5f68a60e", "AQAAAAIAAYagAAAAECVwoHKYEXKRa9Sp3UeNNeVSEZOUkCEVkYcF09ZOVlLm9VeDEoX8M9NzwegIk0EWrw==", "10af871c-53d6-4dfc-9e69-5d3a97d8a016" }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Name", + table: "Sessions"); + + migrationBuilder.UpdateData( + table: "AspNetUsers", + keyColumn: "Id", + keyValue: "5c2511d0-6a08-4950-babd-d107996749ba", + columns: new[] { "ConcurrencyStamp", "PasswordHash", "SecurityStamp" }, + values: new object[] { "359200b3-8f0c-4984-9cb3-f5c6a9957d17", "AQAAAAIAAYagAAAAEObqrKlqsiNSIYErkAsuP7gY+2YW6//ZJ+/txgRXK8rj/8I1eizYiKoWPHANqBNHgA==", "eac1c0ae-b1db-4b57-84db-4cbc0f7d0688" }); + } + } +} diff --git a/songrequests_blazor/Migrations/LocalDbContextModelSnapshot.cs b/songrequests_blazor/Migrations/LocalDbContextModelSnapshot.cs index fb06ea5..b0e6c75 100644 --- a/songrequests_blazor/Migrations/LocalDbContextModelSnapshot.cs +++ b/songrequests_blazor/Migrations/LocalDbContextModelSnapshot.cs @@ -151,15 +151,15 @@ namespace songrequests_blazor.Migrations { Id = "5c2511d0-6a08-4950-babd-d107996749ba", AccessFailedCount = 0, - ConcurrencyStamp = "359200b3-8f0c-4984-9cb3-f5c6a9957d17", + ConcurrencyStamp = "7d7fc619-fde4-408c-8816-f4ed5f68a60e", Email = "admin@admin.com", EmailConfirmed = false, LockoutEnabled = false, NormalizedEmail = "ADMIN@ADMIN.COM", NormalizedUserName = "ADMIN@ADMIN.COM", - PasswordHash = "AQAAAAIAAYagAAAAEObqrKlqsiNSIYErkAsuP7gY+2YW6//ZJ+/txgRXK8rj/8I1eizYiKoWPHANqBNHgA==", + PasswordHash = "AQAAAAIAAYagAAAAECVwoHKYEXKRa9Sp3UeNNeVSEZOUkCEVkYcF09ZOVlLm9VeDEoX8M9NzwegIk0EWrw==", PhoneNumberConfirmed = false, - SecurityStamp = "eac1c0ae-b1db-4b57-84db-4cbc0f7d0688", + SecurityStamp = "10af871c-53d6-4dfc-9e69-5d3a97d8a016", TwoFactorEnabled = false, UserName = "admin@admin.com" }); @@ -349,6 +349,10 @@ namespace songrequests_blazor.Migrations b.Property("Created") .HasColumnType("TEXT"); + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + b.Property("SessionCode") .HasColumnType("TEXT"); diff --git a/songrequests_blazor/data.db b/songrequests_blazor/data.db index 266f118..95e46d1 100644 Binary files a/songrequests_blazor/data.db and b/songrequests_blazor/data.db differ