From 9c60c2cdb5c8764742fb8961fdce57193983d64f Mon Sep 17 00:00:00 2001 From: kemalakoglu Date: Sun, 3 Dec 2023 23:02:47 +0100 Subject: [PATCH 01/10] db-creation --- Todo.Tests/Todo.Tests.csproj | 8 ++++---- Todo/Startup.cs | 2 +- Todo/Todo.csproj | 14 ++++++++++---- Todo/appsettings.json | 2 +- changeLog.md | 9 +++++++++ 5 files changed, 25 insertions(+), 10 deletions(-) create mode 100644 changeLog.md diff --git a/Todo.Tests/Todo.Tests.csproj b/Todo.Tests/Todo.Tests.csproj index 66618326..d0de1d79 100644 --- a/Todo.Tests/Todo.Tests.csproj +++ b/Todo.Tests/Todo.Tests.csproj @@ -1,15 +1,15 @@ - net5.0 + net6.0 false - - - + + + diff --git a/Todo/Startup.cs b/Todo/Startup.cs index dfde325c..0fc41418 100644 --- a/Todo/Startup.cs +++ b/Todo/Startup.cs @@ -31,7 +31,7 @@ public void ConfigureServices(IServiceCollection services) }); services.AddDbContext(options => - options.UseSqlite( + options.UseSqlServer( Configuration.GetConnectionString("DefaultConnection"))); services.AddDefaultIdentity(options => options.SignIn.RequireConfirmedAccount = false) diff --git a/Todo/Todo.csproj b/Todo/Todo.csproj index 420c3a4f..f84414cd 100644 --- a/Todo/Todo.csproj +++ b/Todo/Todo.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 aspnet-Todo-13754FC0-1117-4EAB-9E26-C7E178D7C7A2 @@ -10,9 +10,15 @@ - - - + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/Todo/appsettings.json b/Todo/appsettings.json index 6e79c88e..f512e856 100644 --- a/Todo/appsettings.json +++ b/Todo/appsettings.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "DefaultConnection": "Data Source=todo.db" + "DefaultConnection": "Data Source=DESKTOP-9OSHF57;Database=StoryTeller;User Id=****;Password=****" }, "Logging": { "LogLevel": { diff --git a/changeLog.md b/changeLog.md new file mode 100644 index 00000000..edf1baff --- /dev/null +++ b/changeLog.md @@ -0,0 +1,9 @@ +# Changelog +All notable changes to this project will be documented in this file. + +## [1.0.0] - 03-12-2023 + +### Added + + +### Changed From 2660a1b48e08dd317887491469d4ccd62adfbcdf Mon Sep 17 00:00:00 2001 From: kemalakoglu Date: Mon, 4 Dec 2023 00:15:32 +0100 Subject: [PATCH 02/10] Adding Migrations and finishing task 1 --- Todo/Data/ApplicationDbContext.cs | 2 + Todo/Data/Entities/TodoItem.cs | 2 + Todo/Data/Entities/TodoList.cs | 2 + ...000000000_CreateIdentitySchema.Designer.cs | 236 ----------- .../00000000000000_CreateIdentitySchema.cs | 220 ----------- ...81018104158_CreateTodoEntities.Designer.cs | 289 -------------- .../20181018104158_CreateTodoEntities.cs | 125 ------ .../ApplicationDbContextModelSnapshot.cs | 287 -------------- .../20231203230851_Initial.Designer.cs | 369 ++++++++++++++++++ Todo/Migrations/20231203230851_Initial.cs | 289 ++++++++++++++ .../ApplicationDbContextModelSnapshot.cs | 367 +++++++++++++++++ Todo/Todo.csproj | 9 +- Todo/appsettings.json | 2 +- changeLog.md | 7 + 14 files changed, 1046 insertions(+), 1160 deletions(-) delete mode 100644 Todo/Data/Migrations/00000000000000_CreateIdentitySchema.Designer.cs delete mode 100644 Todo/Data/Migrations/00000000000000_CreateIdentitySchema.cs delete mode 100644 Todo/Data/Migrations/20181018104158_CreateTodoEntities.Designer.cs delete mode 100644 Todo/Data/Migrations/20181018104158_CreateTodoEntities.cs delete mode 100644 Todo/Data/Migrations/ApplicationDbContextModelSnapshot.cs create mode 100644 Todo/Migrations/20231203230851_Initial.Designer.cs create mode 100644 Todo/Migrations/20231203230851_Initial.cs create mode 100644 Todo/Migrations/ApplicationDbContextModelSnapshot.cs diff --git a/Todo/Data/ApplicationDbContext.cs b/Todo/Data/ApplicationDbContext.cs index 4dd7ae40..16f36f2b 100644 --- a/Todo/Data/ApplicationDbContext.cs +++ b/Todo/Data/ApplicationDbContext.cs @@ -21,6 +21,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) modelBuilder.Entity(entity => { + entity.Property(e => e.TodoListId).UseIdentityColumn().HasAnnotation("SqlServer:Identity", "1, 1"); entity.Property(e => e.Title).IsRequired(); }); @@ -29,6 +30,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) entity.HasOne(d => d.TodoList) .WithMany(p => p.Items) .HasForeignKey(d => d.TodoListId); + entity.Property(e => e.TodoItemId).UseIdentityColumn().HasAnnotation("SqlServer:Identity", "1, 1"); }); } } diff --git a/Todo/Data/Entities/TodoItem.cs b/Todo/Data/Entities/TodoItem.cs index 4e08ea41..3acba94c 100644 --- a/Todo/Data/Entities/TodoItem.cs +++ b/Todo/Data/Entities/TodoItem.cs @@ -1,8 +1,10 @@ using Microsoft.AspNetCore.Identity; +using System.ComponentModel.DataAnnotations; namespace Todo.Data.Entities { public class TodoItem { + [Key] public int TodoItemId { get; set; } public string Title { get; set; } public string ResponsiblePartyId { get; set; } diff --git a/Todo/Data/Entities/TodoList.cs b/Todo/Data/Entities/TodoList.cs index 1a91bbda..07a251cc 100644 --- a/Todo/Data/Entities/TodoList.cs +++ b/Todo/Data/Entities/TodoList.cs @@ -1,10 +1,12 @@ using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using Microsoft.AspNetCore.Identity; namespace Todo.Data.Entities { public class TodoList { + [Key] public int TodoListId { get; set; } public string Title { get; set; } public IdentityUser Owner { get; set; } diff --git a/Todo/Data/Migrations/00000000000000_CreateIdentitySchema.Designer.cs b/Todo/Data/Migrations/00000000000000_CreateIdentitySchema.Designer.cs deleted file mode 100644 index dabc7e9a..00000000 --- a/Todo/Data/Migrations/00000000000000_CreateIdentitySchema.Designer.cs +++ /dev/null @@ -1,236 +0,0 @@ -// -using System; -using Todo.Data; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -namespace Todo.Data.Migrations -{ - [DbContext(typeof(ApplicationDbContext))] - [Migration("00000000000000_CreateIdentitySchema")] - partial class CreateIdentitySchema - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "2.1.0") - .HasAnnotation("Relational:MaxIdentifierLength", 128) - .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Name") - .HasMaxLength(256); - - b.Property("NormalizedName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasName("RoleNameIndex") - .HasFilter("[NormalizedName] IS NOT NULL"); - - b.ToTable("AspNetRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("RoleId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetRoleClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AccessFailedCount"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Email") - .HasMaxLength(256); - - b.Property("EmailConfirmed"); - - b.Property("LockoutEnabled"); - - b.Property("LockoutEnd"); - - b.Property("NormalizedEmail") - .HasMaxLength(256); - - b.Property("NormalizedUserName") - .HasMaxLength(256); - - b.Property("PasswordHash"); - - b.Property("PhoneNumber"); - - b.Property("PhoneNumberConfirmed"); - - b.Property("SecurityStamp"); - - b.Property("TwoFactorEnabled"); - - b.Property("UserName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedEmail") - .HasName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasName("UserNameIndex") - .HasFilter("[NormalizedUserName] IS NOT NULL"); - - b.ToTable("AspNetUsers"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider") - .HasMaxLength(128); - - b.Property("ProviderKey") - .HasMaxLength(128); - - b.Property("ProviderDisplayName"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserLogins"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId"); - - b.Property("RoleId"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetUserRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId"); - - b.Property("LoginProvider") - .HasMaxLength(128); - - b.Property("Name") - .HasMaxLength(128); - - b.Property("Value"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AspNetUserTokens"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Todo/Data/Migrations/00000000000000_CreateIdentitySchema.cs b/Todo/Data/Migrations/00000000000000_CreateIdentitySchema.cs deleted file mode 100644 index 4373ab61..00000000 --- a/Todo/Data/Migrations/00000000000000_CreateIdentitySchema.cs +++ /dev/null @@ -1,220 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace Todo.Data.Migrations -{ - public partial class CreateIdentitySchema : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "AspNetRoles", - columns: table => new - { - Id = table.Column(nullable: false), - Name = table.Column(maxLength: 256, nullable: true), - NormalizedName = table.Column(maxLength: 256, nullable: true), - ConcurrencyStamp = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetRoles", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AspNetUsers", - columns: table => new - { - Id = table.Column(nullable: false), - UserName = table.Column(maxLength: 256, nullable: true), - NormalizedUserName = table.Column(maxLength: 256, nullable: true), - Email = table.Column(maxLength: 256, nullable: true), - NormalizedEmail = table.Column(maxLength: 256, nullable: true), - EmailConfirmed = table.Column(nullable: false), - PasswordHash = table.Column(nullable: true), - SecurityStamp = table.Column(nullable: true), - ConcurrencyStamp = table.Column(nullable: true), - PhoneNumber = table.Column(nullable: true), - PhoneNumberConfirmed = table.Column(nullable: false), - TwoFactorEnabled = table.Column(nullable: false), - LockoutEnd = table.Column(nullable: true), - LockoutEnabled = table.Column(nullable: false), - AccessFailedCount = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUsers", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AspNetRoleClaims", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), - RoleId = table.Column(nullable: false), - ClaimType = table.Column(nullable: true), - ClaimValue = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id); - table.ForeignKey( - name: "FK_AspNetRoleClaims_AspNetRoles_RoleId", - column: x => x.RoleId, - principalTable: "AspNetRoles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AspNetUserClaims", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: false), - ClaimType = table.Column(nullable: true), - ClaimValue = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUserClaims", x => x.Id); - table.ForeignKey( - name: "FK_AspNetUserClaims_AspNetUsers_UserId", - column: x => x.UserId, - principalTable: "AspNetUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AspNetUserLogins", - columns: table => new - { - LoginProvider = table.Column(maxLength: 128, nullable: false), - ProviderKey = table.Column(maxLength: 128, nullable: false), - ProviderDisplayName = table.Column(nullable: true), - UserId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey }); - table.ForeignKey( - name: "FK_AspNetUserLogins_AspNetUsers_UserId", - column: x => x.UserId, - principalTable: "AspNetUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AspNetUserRoles", - columns: table => new - { - UserId = table.Column(nullable: false), - RoleId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUserRoles", x => new { x.UserId, x.RoleId }); - table.ForeignKey( - name: "FK_AspNetUserRoles_AspNetRoles_RoleId", - column: x => x.RoleId, - principalTable: "AspNetRoles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_AspNetUserRoles_AspNetUsers_UserId", - column: x => x.UserId, - principalTable: "AspNetUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AspNetUserTokens", - columns: table => new - { - UserId = table.Column(nullable: false), - LoginProvider = table.Column(maxLength: 128, nullable: false), - Name = table.Column(maxLength: 128, nullable: false), - Value = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); - table.ForeignKey( - name: "FK_AspNetUserTokens_AspNetUsers_UserId", - column: x => x.UserId, - principalTable: "AspNetUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_AspNetRoleClaims_RoleId", - table: "AspNetRoleClaims", - column: "RoleId"); - - migrationBuilder.CreateIndex( - name: "RoleNameIndex", - table: "AspNetRoles", - column: "NormalizedName", - unique: true, - filter: "[NormalizedName] IS NOT NULL"); - - migrationBuilder.CreateIndex( - name: "IX_AspNetUserClaims_UserId", - table: "AspNetUserClaims", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_AspNetUserLogins_UserId", - table: "AspNetUserLogins", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_AspNetUserRoles_RoleId", - table: "AspNetUserRoles", - column: "RoleId"); - - migrationBuilder.CreateIndex( - name: "EmailIndex", - table: "AspNetUsers", - column: "NormalizedEmail"); - - migrationBuilder.CreateIndex( - name: "UserNameIndex", - table: "AspNetUsers", - column: "NormalizedUserName", - unique: true, - filter: "[NormalizedUserName] IS NOT NULL"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "AspNetRoleClaims"); - - migrationBuilder.DropTable( - name: "AspNetUserClaims"); - - migrationBuilder.DropTable( - name: "AspNetUserLogins"); - - migrationBuilder.DropTable( - name: "AspNetUserRoles"); - - migrationBuilder.DropTable( - name: "AspNetUserTokens"); - - migrationBuilder.DropTable( - name: "AspNetRoles"); - - migrationBuilder.DropTable( - name: "AspNetUsers"); - } - } -} diff --git a/Todo/Data/Migrations/20181018104158_CreateTodoEntities.Designer.cs b/Todo/Data/Migrations/20181018104158_CreateTodoEntities.Designer.cs deleted file mode 100644 index 55093616..00000000 --- a/Todo/Data/Migrations/20181018104158_CreateTodoEntities.Designer.cs +++ /dev/null @@ -1,289 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Todo.Data; - -namespace Todo.Data.Migrations -{ - [DbContext(typeof(ApplicationDbContext))] - [Migration("20181018104158_CreateTodoEntities")] - partial class CreateTodoEntities - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "2.1.4-rtm-31024"); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Name") - .HasMaxLength(256); - - b.Property("NormalizedName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasName("RoleNameIndex"); - - b.ToTable("AspNetRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("RoleId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetRoleClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AccessFailedCount"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Email") - .HasMaxLength(256); - - b.Property("EmailConfirmed"); - - b.Property("LockoutEnabled"); - - b.Property("LockoutEnd"); - - b.Property("NormalizedEmail") - .HasMaxLength(256); - - b.Property("NormalizedUserName") - .HasMaxLength(256); - - b.Property("PasswordHash"); - - b.Property("PhoneNumber"); - - b.Property("PhoneNumberConfirmed"); - - b.Property("SecurityStamp"); - - b.Property("TwoFactorEnabled"); - - b.Property("UserName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedEmail") - .HasName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasName("UserNameIndex"); - - b.ToTable("AspNetUsers"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider") - .HasMaxLength(128); - - b.Property("ProviderKey") - .HasMaxLength(128); - - b.Property("ProviderDisplayName"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserLogins"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId"); - - b.Property("RoleId"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetUserRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId"); - - b.Property("LoginProvider") - .HasMaxLength(128); - - b.Property("Name") - .HasMaxLength(128); - - b.Property("Value"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AspNetUserTokens"); - }); - - modelBuilder.Entity("Todo.Data.Entities.TodoItem", b => - { - b.Property("TodoItemId") - .ValueGeneratedOnAdd(); - - b.Property("Importance"); - - b.Property("IsDone"); - - b.Property("ResponsiblePartyId"); - - b.Property("Title"); - - b.Property("TodoListId"); - - b.HasKey("TodoItemId"); - - b.HasIndex("ResponsiblePartyId"); - - b.HasIndex("TodoListId"); - - b.ToTable("TodoItems"); - }); - - modelBuilder.Entity("Todo.Data.Entities.TodoList", b => - { - b.Property("TodoListId") - .ValueGeneratedOnAdd(); - - b.Property("OwnerId"); - - b.Property("Title") - .IsRequired(); - - b.HasKey("TodoListId"); - - b.HasIndex("OwnerId"); - - b.ToTable("TodoLists"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Todo.Data.Entities.TodoItem", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "ResponsibleParty") - .WithMany() - .HasForeignKey("ResponsiblePartyId"); - - b.HasOne("Todo.Data.Entities.TodoList", "TodoList") - .WithMany("Items") - .HasForeignKey("TodoListId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Todo.Data.Entities.TodoList", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "Owner") - .WithMany() - .HasForeignKey("OwnerId"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Todo/Data/Migrations/20181018104158_CreateTodoEntities.cs b/Todo/Data/Migrations/20181018104158_CreateTodoEntities.cs deleted file mode 100644 index cd410877..00000000 --- a/Todo/Data/Migrations/20181018104158_CreateTodoEntities.cs +++ /dev/null @@ -1,125 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -namespace Todo.Data.Migrations -{ - public partial class CreateTodoEntities : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropIndex( - name: "UserNameIndex", - table: "AspNetUsers"); - - migrationBuilder.DropIndex( - name: "RoleNameIndex", - table: "AspNetRoles"); - - migrationBuilder.CreateTable( - name: "TodoLists", - columns: table => new - { - TodoListId = table.Column(nullable: false) - .Annotation("Sqlite:Autoincrement", true), - Title = table.Column(nullable: false), - OwnerId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_TodoLists", x => x.TodoListId); - table.ForeignKey( - name: "FK_TodoLists_AspNetUsers_OwnerId", - column: x => x.OwnerId, - principalTable: "AspNetUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "TodoItems", - columns: table => new - { - TodoItemId = table.Column(nullable: false) - .Annotation("Sqlite:Autoincrement", true), - Title = table.Column(nullable: true), - ResponsiblePartyId = table.Column(nullable: true), - IsDone = table.Column(nullable: false), - Importance = table.Column(nullable: false), - TodoListId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_TodoItems", x => x.TodoItemId); - table.ForeignKey( - name: "FK_TodoItems_AspNetUsers_ResponsiblePartyId", - column: x => x.ResponsiblePartyId, - principalTable: "AspNetUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_TodoItems_TodoLists_TodoListId", - column: x => x.TodoListId, - principalTable: "TodoLists", - principalColumn: "TodoListId", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "UserNameIndex", - table: "AspNetUsers", - column: "NormalizedUserName", - unique: true); - - migrationBuilder.CreateIndex( - name: "RoleNameIndex", - table: "AspNetRoles", - column: "NormalizedName", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_TodoItems_ResponsiblePartyId", - table: "TodoItems", - column: "ResponsiblePartyId"); - - migrationBuilder.CreateIndex( - name: "IX_TodoItems_TodoListId", - table: "TodoItems", - column: "TodoListId"); - - migrationBuilder.CreateIndex( - name: "IX_TodoLists_OwnerId", - table: "TodoLists", - column: "OwnerId"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "TodoItems"); - - migrationBuilder.DropTable( - name: "TodoLists"); - - migrationBuilder.DropIndex( - name: "UserNameIndex", - table: "AspNetUsers"); - - migrationBuilder.DropIndex( - name: "RoleNameIndex", - table: "AspNetRoles"); - - migrationBuilder.CreateIndex( - name: "UserNameIndex", - table: "AspNetUsers", - column: "NormalizedUserName", - unique: true, - filter: "[NormalizedUserName] IS NOT NULL"); - - migrationBuilder.CreateIndex( - name: "RoleNameIndex", - table: "AspNetRoles", - column: "NormalizedName", - unique: true, - filter: "[NormalizedName] IS NOT NULL"); - } - } -} diff --git a/Todo/Data/Migrations/ApplicationDbContextModelSnapshot.cs b/Todo/Data/Migrations/ApplicationDbContextModelSnapshot.cs deleted file mode 100644 index c05e7dee..00000000 --- a/Todo/Data/Migrations/ApplicationDbContextModelSnapshot.cs +++ /dev/null @@ -1,287 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Todo.Data; - -namespace Todo.Data.Migrations -{ - [DbContext(typeof(ApplicationDbContext))] - partial class ApplicationDbContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "2.1.4-rtm-31024"); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Name") - .HasMaxLength(256); - - b.Property("NormalizedName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasName("RoleNameIndex"); - - b.ToTable("AspNetRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("RoleId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetRoleClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AccessFailedCount"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken(); - - b.Property("Email") - .HasMaxLength(256); - - b.Property("EmailConfirmed"); - - b.Property("LockoutEnabled"); - - b.Property("LockoutEnd"); - - b.Property("NormalizedEmail") - .HasMaxLength(256); - - b.Property("NormalizedUserName") - .HasMaxLength(256); - - b.Property("PasswordHash"); - - b.Property("PhoneNumber"); - - b.Property("PhoneNumberConfirmed"); - - b.Property("SecurityStamp"); - - b.Property("TwoFactorEnabled"); - - b.Property("UserName") - .HasMaxLength(256); - - b.HasKey("Id"); - - b.HasIndex("NormalizedEmail") - .HasName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasName("UserNameIndex"); - - b.ToTable("AspNetUsers"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ClaimType"); - - b.Property("ClaimValue"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserClaims"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider") - .HasMaxLength(128); - - b.Property("ProviderKey") - .HasMaxLength(128); - - b.Property("ProviderDisplayName"); - - b.Property("UserId") - .IsRequired(); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserLogins"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId"); - - b.Property("RoleId"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetUserRoles"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId"); - - b.Property("LoginProvider") - .HasMaxLength(128); - - b.Property("Name") - .HasMaxLength(128); - - b.Property("Value"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AspNetUserTokens"); - }); - - modelBuilder.Entity("Todo.Data.Entities.TodoItem", b => - { - b.Property("TodoItemId") - .ValueGeneratedOnAdd(); - - b.Property("Importance"); - - b.Property("IsDone"); - - b.Property("ResponsiblePartyId"); - - b.Property("Title"); - - b.Property("TodoListId"); - - b.HasKey("TodoItemId"); - - b.HasIndex("ResponsiblePartyId"); - - b.HasIndex("TodoListId"); - - b.ToTable("TodoItems"); - }); - - modelBuilder.Entity("Todo.Data.Entities.TodoList", b => - { - b.Property("TodoListId") - .ValueGeneratedOnAdd(); - - b.Property("OwnerId"); - - b.Property("Title") - .IsRequired(); - - b.HasKey("TodoListId"); - - b.HasIndex("OwnerId"); - - b.ToTable("TodoLists"); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Todo.Data.Entities.TodoItem", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "ResponsibleParty") - .WithMany() - .HasForeignKey("ResponsiblePartyId"); - - b.HasOne("Todo.Data.Entities.TodoList", "TodoList") - .WithMany("Items") - .HasForeignKey("TodoListId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("Todo.Data.Entities.TodoList", b => - { - b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "Owner") - .WithMany() - .HasForeignKey("OwnerId"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Todo/Migrations/20231203230851_Initial.Designer.cs b/Todo/Migrations/20231203230851_Initial.Designer.cs new file mode 100644 index 00000000..93491f18 --- /dev/null +++ b/Todo/Migrations/20231203230851_Initial.Designer.cs @@ -0,0 +1,369 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Todo.Data; + +#nullable disable + +namespace Todo.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20231203230851_Initial")] + partial class Initial + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("RoleId") + .HasColumnType("nvarchar(450)"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoItem", b => + { + b.Property("TodoItemId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:Identity", "1, 1"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("TodoItemId"), 1L, 1); + + b.Property("Importance") + .HasColumnType("int"); + + b.Property("IsDone") + .HasColumnType("bit"); + + b.Property("ResponsiblePartyId") + .HasColumnType("nvarchar(450)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("TodoListId") + .HasColumnType("int"); + + b.HasKey("TodoItemId"); + + b.HasIndex("ResponsiblePartyId"); + + b.HasIndex("TodoListId"); + + b.ToTable("TodoItems"); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoList", b => + { + b.Property("TodoListId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:Identity", "1, 1"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("TodoListId"), 1L, 1); + + b.Property("OwnerId") + .HasColumnType("nvarchar(450)"); + + b.Property("Title") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("TodoListId"); + + b.HasIndex("OwnerId"); + + b.ToTable("TodoLists"); + }); + + 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("Todo.Data.Entities.TodoItem", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "ResponsibleParty") + .WithMany() + .HasForeignKey("ResponsiblePartyId"); + + b.HasOne("Todo.Data.Entities.TodoList", "TodoList") + .WithMany("Items") + .HasForeignKey("TodoListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ResponsibleParty"); + + b.Navigation("TodoList"); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoList", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoList", b => + { + b.Navigation("Items"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Todo/Migrations/20231203230851_Initial.cs b/Todo/Migrations/20231203230851_Initial.cs new file mode 100644 index 00000000..774533c0 --- /dev/null +++ b/Todo/Migrations/20231203230851_Initial.cs @@ -0,0 +1,289 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Todo.Migrations +{ + public partial class Initial : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "AspNetRoles", + columns: table => new + { + Id = table.Column(type: "nvarchar(450)", nullable: false), + Name = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + NormalizedName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetRoles", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AspNetUsers", + columns: table => new + { + Id = table.Column(type: "nvarchar(450)", nullable: false), + UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + NormalizedUserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + Email = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + NormalizedEmail = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + EmailConfirmed = table.Column(type: "bit", nullable: false), + PasswordHash = table.Column(type: "nvarchar(max)", nullable: true), + SecurityStamp = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(max)", nullable: true), + PhoneNumber = table.Column(type: "nvarchar(max)", nullable: true), + PhoneNumberConfirmed = table.Column(type: "bit", nullable: false), + TwoFactorEnabled = table.Column(type: "bit", nullable: false), + LockoutEnd = table.Column(type: "datetimeoffset", nullable: true), + LockoutEnabled = table.Column(type: "bit", nullable: false), + AccessFailedCount = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUsers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AspNetRoleClaims", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + RoleId = table.Column(type: "nvarchar(450)", nullable: false), + ClaimType = table.Column(type: "nvarchar(max)", nullable: true), + ClaimValue = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id); + table.ForeignKey( + name: "FK_AspNetRoleClaims_AspNetRoles_RoleId", + column: x => x.RoleId, + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserClaims", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + UserId = table.Column(type: "nvarchar(450)", nullable: false), + ClaimType = table.Column(type: "nvarchar(max)", nullable: true), + ClaimValue = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserClaims", x => x.Id); + table.ForeignKey( + name: "FK_AspNetUserClaims_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserLogins", + columns: table => new + { + LoginProvider = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ProviderKey = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ProviderDisplayName = table.Column(type: "nvarchar(max)", nullable: true), + UserId = table.Column(type: "nvarchar(450)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey }); + table.ForeignKey( + name: "FK_AspNetUserLogins_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserRoles", + columns: table => new + { + UserId = table.Column(type: "nvarchar(450)", nullable: false), + RoleId = table.Column(type: "nvarchar(450)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserRoles", x => new { x.UserId, x.RoleId }); + table.ForeignKey( + name: "FK_AspNetUserRoles_AspNetRoles_RoleId", + column: x => x.RoleId, + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AspNetUserRoles_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserTokens", + columns: table => new + { + UserId = table.Column(type: "nvarchar(450)", nullable: false), + LoginProvider = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Value = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); + table.ForeignKey( + name: "FK_AspNetUserTokens_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "TodoLists", + columns: table => new + { + TodoListId = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Title = table.Column(type: "nvarchar(max)", nullable: false), + OwnerId = table.Column(type: "nvarchar(450)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_TodoLists", x => x.TodoListId); + table.ForeignKey( + name: "FK_TodoLists_AspNetUsers_OwnerId", + column: x => x.OwnerId, + principalTable: "AspNetUsers", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "TodoItems", + columns: table => new + { + TodoItemId = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Title = table.Column(type: "nvarchar(max)", nullable: true), + ResponsiblePartyId = table.Column(type: "nvarchar(450)", nullable: true), + IsDone = table.Column(type: "bit", nullable: false), + Importance = table.Column(type: "int", nullable: false), + TodoListId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_TodoItems", x => x.TodoItemId); + table.ForeignKey( + name: "FK_TodoItems_AspNetUsers_ResponsiblePartyId", + column: x => x.ResponsiblePartyId, + principalTable: "AspNetUsers", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_TodoItems_TodoLists_TodoListId", + column: x => x.TodoListId, + principalTable: "TodoLists", + principalColumn: "TodoListId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_AspNetRoleClaims_RoleId", + table: "AspNetRoleClaims", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "RoleNameIndex", + table: "AspNetRoles", + column: "NormalizedName", + unique: true, + filter: "[NormalizedName] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserClaims_UserId", + table: "AspNetUserClaims", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserLogins_UserId", + table: "AspNetUserLogins", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserRoles_RoleId", + table: "AspNetUserRoles", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "EmailIndex", + table: "AspNetUsers", + column: "NormalizedEmail"); + + migrationBuilder.CreateIndex( + name: "UserNameIndex", + table: "AspNetUsers", + column: "NormalizedUserName", + unique: true, + filter: "[NormalizedUserName] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_TodoItems_ResponsiblePartyId", + table: "TodoItems", + column: "ResponsiblePartyId"); + + migrationBuilder.CreateIndex( + name: "IX_TodoItems_TodoListId", + table: "TodoItems", + column: "TodoListId"); + + migrationBuilder.CreateIndex( + name: "IX_TodoLists_OwnerId", + table: "TodoLists", + column: "OwnerId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AspNetRoleClaims"); + + migrationBuilder.DropTable( + name: "AspNetUserClaims"); + + migrationBuilder.DropTable( + name: "AspNetUserLogins"); + + migrationBuilder.DropTable( + name: "AspNetUserRoles"); + + migrationBuilder.DropTable( + name: "AspNetUserTokens"); + + migrationBuilder.DropTable( + name: "TodoItems"); + + migrationBuilder.DropTable( + name: "AspNetRoles"); + + migrationBuilder.DropTable( + name: "TodoLists"); + + migrationBuilder.DropTable( + name: "AspNetUsers"); + } + } +} diff --git a/Todo/Migrations/ApplicationDbContextModelSnapshot.cs b/Todo/Migrations/ApplicationDbContextModelSnapshot.cs new file mode 100644 index 00000000..73d7f67e --- /dev/null +++ b/Todo/Migrations/ApplicationDbContextModelSnapshot.cs @@ -0,0 +1,367 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Todo.Data; + +#nullable disable + +namespace Todo.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + partial class ApplicationDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("RoleId") + .HasColumnType("nvarchar(450)"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoItem", b => + { + b.Property("TodoItemId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:Identity", "1, 1"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("TodoItemId"), 1L, 1); + + b.Property("Importance") + .HasColumnType("int"); + + b.Property("IsDone") + .HasColumnType("bit"); + + b.Property("ResponsiblePartyId") + .HasColumnType("nvarchar(450)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("TodoListId") + .HasColumnType("int"); + + b.HasKey("TodoItemId"); + + b.HasIndex("ResponsiblePartyId"); + + b.HasIndex("TodoListId"); + + b.ToTable("TodoItems"); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoList", b => + { + b.Property("TodoListId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:Identity", "1, 1"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("TodoListId"), 1L, 1); + + b.Property("OwnerId") + .HasColumnType("nvarchar(450)"); + + b.Property("Title") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("TodoListId"); + + b.HasIndex("OwnerId"); + + b.ToTable("TodoLists"); + }); + + 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("Todo.Data.Entities.TodoItem", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "ResponsibleParty") + .WithMany() + .HasForeignKey("ResponsiblePartyId"); + + b.HasOne("Todo.Data.Entities.TodoList", "TodoList") + .WithMany("Items") + .HasForeignKey("TodoListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ResponsibleParty"); + + b.Navigation("TodoList"); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoList", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoList", b => + { + b.Navigation("Items"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Todo/Todo.csproj b/Todo/Todo.csproj index f84414cd..c8103b52 100644 --- a/Todo/Todo.csproj +++ b/Todo/Todo.csproj @@ -7,8 +7,8 @@ - - + + all @@ -28,4 +28,9 @@ + + + + + diff --git a/Todo/appsettings.json b/Todo/appsettings.json index f512e856..821a10a6 100644 --- a/Todo/appsettings.json +++ b/Todo/appsettings.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "DefaultConnection": "Data Source=DESKTOP-9OSHF57;Database=StoryTeller;User Id=****;Password=****" + "DefaultConnection": "Data Source=DESKTOP-9OSHF57;Database=StoryTeller;User Id=kemalakoglu;Password=Developer123!!" }, "Logging": { "LogLevel": { diff --git a/changeLog.md b/changeLog.md index edf1baff..b0b7fbf0 100644 --- a/changeLog.md +++ b/changeLog.md @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file. ## [1.0.0] - 03-12-2023 ### Added + create mode 100644 changeLog.md ### Changed + DB chnaged by SqlServer + Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore package was updated to Version 6.0.0 + Microsoft.AspNetCore.Identity.EntityFrameworkCore package was updated to Version 6.0.0 + Microsoft.EntityFrameworkCore.Design package was updated to Version 6.0.0 + Microsoft.EntityFrameworkCore.SqlServer package was updated to Version 6.0.0 + Microsoft.EntityFrameworkCore.Tools package was updated to Version 6.0.0 \ No newline at end of file From 491ce60b24903f1846940b6026a9115b43988536 Mon Sep 17 00:00:00 2001 From: kemalakoglu Date: Mon, 4 Dec 2023 00:20:02 +0100 Subject: [PATCH 03/10] changelogmd was updated ConnectionStrings was masked --- Todo/appsettings.json | 2 +- changeLog.md | 20 +++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Todo/appsettings.json b/Todo/appsettings.json index 821a10a6..87fa799b 100644 --- a/Todo/appsettings.json +++ b/Todo/appsettings.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "DefaultConnection": "Data Source=DESKTOP-9OSHF57;Database=StoryTeller;User Id=kemalakoglu;Password=Developer123!!" + "DefaultConnection": "Data Source=DESKTOP-9OSHF57;Database=StoryTeller;User Id=*****;Password=*****" }, "Logging": { "LogLevel": { diff --git a/changeLog.md b/changeLog.md index b0b7fbf0..6aca8c60 100644 --- a/changeLog.md +++ b/changeLog.md @@ -1,16 +1,30 @@ # Changelog All notable changes to this project will be documented in this file. -## [1.0.0] - 03-12-2023 +## [1.0.0] - 03-12-2023 11:30 PM CET ### Added create mode 100644 changeLog.md - ### Changed DB chnaged by SqlServer Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore package was updated to Version 6.0.0 Microsoft.AspNetCore.Identity.EntityFrameworkCore package was updated to Version 6.0.0 Microsoft.EntityFrameworkCore.Design package was updated to Version 6.0.0 Microsoft.EntityFrameworkCore.SqlServer package was updated to Version 6.0.0 - Microsoft.EntityFrameworkCore.Tools package was updated to Version 6.0.0 \ No newline at end of file + Microsoft.EntityFrameworkCore.Tools package was updated to Version 6.0.0 + + +## [1.0.1] - 04-12-2023 00:17 AM CET + +### Added + create mode 100644 Todo/Migrations/20231203230851_Initial.Designer.cs + create mode 100644 Todo/Migrations/20231203230851_Initial.cs + create mode 100644 Todo/Migrations/ApplicationDbContextModelSnapshot.cs + +### Changed + delete mode 100644 Todo/Data/Migrations/00000000000000_CreateIdentitySchema.Designer.cs + delete mode 100644 Todo/Data/Migrations/00000000000000_CreateIdentitySchema.cs + delete mode 100644 Todo/Data/Migrations/20181018104158_CreateTodoEntities.Designer.cs + delete mode 100644 Todo/Data/Migrations/20181018104158_CreateTodoEntities.cs + delete mode 100644 Todo/Data/Migrations/ApplicationDbContextModelSnapshot.cs \ No newline at end of file From f2e11e1a86142d7cde6362701440f0ca3197fe02 Mon Sep 17 00:00:00 2001 From: kemalakoglu Date: Mon, 4 Dec 2023 00:54:15 +0100 Subject: [PATCH 04/10] Task 2 --- Todo/Views/TodoList/Detail.cshtml | 2 +- changeLog.md | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Todo/Views/TodoList/Detail.cshtml b/Todo/Views/TodoList/Detail.cshtml index 650f0bc2..ce1f13bc 100644 --- a/Todo/Views/TodoList/Detail.cshtml +++ b/Todo/Views/TodoList/Detail.cshtml @@ -19,7 +19,7 @@ - @foreach (var item in Model.Items) + @foreach (var item in Model.Items.OrderBy(x=>x.Importance)) { string contextualClass; switch (item.Importance) diff --git a/changeLog.md b/changeLog.md index 6aca8c60..535a1b80 100644 --- a/changeLog.md +++ b/changeLog.md @@ -27,4 +27,8 @@ All notable changes to this project will be documented in this file. delete mode 100644 Todo/Data/Migrations/00000000000000_CreateIdentitySchema.cs delete mode 100644 Todo/Data/Migrations/20181018104158_CreateTodoEntities.Designer.cs delete mode 100644 Todo/Data/Migrations/20181018104158_CreateTodoEntities.cs - delete mode 100644 Todo/Data/Migrations/ApplicationDbContextModelSnapshot.cs \ No newline at end of file + delete mode 100644 Todo/Data/Migrations/ApplicationDbContextModelSnapshot.cs + +## [1.0.2] - 04-12-2023 00:53 AM CET +### Changed + modified: Todo/Views/TodoList/Detail.cshtml \ No newline at end of file From 676020d8db36573365b514512276a40c1d671004 Mon Sep 17 00:00:00 2001 From: kemalakoglu Date: Mon, 4 Dec 2023 00:54:57 +0100 Subject: [PATCH 05/10] changelog.md was updated --- changeLog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changeLog.md b/changeLog.md index 535a1b80..3082e80e 100644 --- a/changeLog.md +++ b/changeLog.md @@ -30,5 +30,6 @@ All notable changes to this project will be documented in this file. delete mode 100644 Todo/Data/Migrations/ApplicationDbContextModelSnapshot.cs ## [1.0.2] - 04-12-2023 00:53 AM CET + ### Changed modified: Todo/Views/TodoList/Detail.cshtml \ No newline at end of file From 27bc32bed90d1a0aff290478403835f4f44c66e2 Mon Sep 17 00:00:00 2001 From: kemalakoglu Date: Mon, 4 Dec 2023 01:11:38 +0100 Subject: [PATCH 06/10] modified: Todo/Models/TodoItems/TodoItemEditFields.cs --- Todo/Models/TodoItems/TodoItemEditFields.cs | 2 +- changeLog.md | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Todo/Models/TodoItems/TodoItemEditFields.cs b/Todo/Models/TodoItems/TodoItemEditFields.cs index 43c970ef..baca831b 100644 --- a/Todo/Models/TodoItems/TodoItemEditFields.cs +++ b/Todo/Models/TodoItems/TodoItemEditFields.cs @@ -22,7 +22,7 @@ public TodoItemEditFields(int todoListId, string todoListTitle, int todoItemId, Title = title; IsDone = isDone; ResponsiblePartyId = responsiblePartyId; - Importance = Importance.Medium; + Importance = importance; } } } \ No newline at end of file diff --git a/changeLog.md b/changeLog.md index 3082e80e..f9c3d091 100644 --- a/changeLog.md +++ b/changeLog.md @@ -29,7 +29,14 @@ All notable changes to this project will be documented in this file. delete mode 100644 Todo/Data/Migrations/20181018104158_CreateTodoEntities.cs delete mode 100644 Todo/Data/Migrations/ApplicationDbContextModelSnapshot.cs + ## [1.0.2] - 04-12-2023 00:53 AM CET ### Changed - modified: Todo/Views/TodoList/Detail.cshtml \ No newline at end of file + modified: Todo/Views/TodoList/Detail.cshtml + + +## [1.0.3] - 04-12-2023 01:11 AM CET + +### Changed + modified: Todo/Models/TodoItems/TodoItemEditFields.cs \ No newline at end of file From b78982fff4b3c619c2408fa5d24856ecf2b72b25 Mon Sep 17 00:00:00 2001 From: kemalakoglu Date: Mon, 4 Dec 2023 07:45:08 +0100 Subject: [PATCH 07/10] modified: Todo/Services/ApplicationDbContextConvenience.cs --- Todo/Services/ApplicationDbContextConvenience.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Todo/Services/ApplicationDbContextConvenience.cs b/Todo/Services/ApplicationDbContextConvenience.cs index 3549d4b3..f50df922 100644 --- a/Todo/Services/ApplicationDbContextConvenience.cs +++ b/Todo/Services/ApplicationDbContextConvenience.cs @@ -11,7 +11,7 @@ public static IQueryable RelevantTodoLists(this ApplicationDbContext d { return dbContext.TodoLists.Include(tl => tl.Owner) .Include(tl => tl.Items) - .Where(tl => tl.Owner.Id == userId); + .Where(tl => tl.Owner.Id == userId || tl.Items.Any(i => i.ResponsiblePartyId == userId)); } public static TodoList SingleTodoList(this ApplicationDbContext dbContext, int todoListId) From 29e787c7d5efcf1ad6d13090ea3ab9850bbbc217 Mon Sep 17 00:00:00 2001 From: kemalakoglu Date: Mon, 4 Dec 2023 07:48:13 +0100 Subject: [PATCH 08/10] ## [1.0.3] - 04-12-2023 01:11 AM CET ### Changed modified: Todo/Models/TodoItems/TodoItemEditFields.cs --- changeLog.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/changeLog.md b/changeLog.md index f9c3d091..b5535f92 100644 --- a/changeLog.md +++ b/changeLog.md @@ -39,4 +39,10 @@ All notable changes to this project will be documented in this file. ## [1.0.3] - 04-12-2023 01:11 AM CET ### Changed - modified: Todo/Models/TodoItems/TodoItemEditFields.cs \ No newline at end of file + modified: Todo/Models/TodoItems/TodoItemEditFields.cs + + +## [1.0.4] - 04-12-2023 07:47 AM CET + +### Changed + modified: Todo/Services/ApplicationDbContextConvenience.cs \ No newline at end of file From 1570c008df5c8f1ed9c34b798ab997be2e61b9c7 Mon Sep 17 00:00:00 2001 From: kemalakoglu Date: Mon, 4 Dec 2023 09:03:59 +0100 Subject: [PATCH 09/10] task 7.1 --- Todo.Tests/TestTodoListBuilder.cs | 8 +- .../WhenTodoItemIsConvertedToEditFields.cs | 2 +- Todo/Controllers/TodoItemController.cs | 2 +- Todo/Data/Entities/TodoItem.cs | 6 +- .../TodoItems/TodoItemEditFieldsFactory.cs | 3 +- ...20231204065354_ToDo-Item-Range.Designer.cs | 373 ++++++++++++++++++ .../20231204065354_ToDo-Item-Range.cs | 27 ++ .../20231204074018_ToDo-Item-Rank.Designer.cs | 373 ++++++++++++++++++ .../20231204074018_ToDo-Item-Rank.cs | 25 ++ ...51_ToDo-Item-Rank-Type-Changed.Designer.cs | 373 ++++++++++++++++++ ...31204075751_ToDo-Item-Rank-Type-Changed.cs | 35 ++ .../ApplicationDbContextModelSnapshot.cs | 4 + Todo/Models/TodoItems/TodoItemCreateFields.cs | 1 + Todo/Models/TodoItems/TodoItemEditFields.cs | 4 +- Todo/Views/TodoItem/Create.cshtml | 6 + Todo/Views/TodoItem/Edit.cshtml | 21 +- Todo/appsettings.json | 2 +- 17 files changed, 1247 insertions(+), 18 deletions(-) create mode 100644 Todo/Migrations/20231204065354_ToDo-Item-Range.Designer.cs create mode 100644 Todo/Migrations/20231204065354_ToDo-Item-Range.cs create mode 100644 Todo/Migrations/20231204074018_ToDo-Item-Rank.Designer.cs create mode 100644 Todo/Migrations/20231204074018_ToDo-Item-Rank.cs create mode 100644 Todo/Migrations/20231204075751_ToDo-Item-Rank-Type-Changed.Designer.cs create mode 100644 Todo/Migrations/20231204075751_ToDo-Item-Rank-Type-Changed.cs diff --git a/Todo.Tests/TestTodoListBuilder.cs b/Todo.Tests/TestTodoListBuilder.cs index 85be83c3..9ca5bc09 100644 --- a/Todo.Tests/TestTodoListBuilder.cs +++ b/Todo.Tests/TestTodoListBuilder.cs @@ -12,7 +12,7 @@ public class TestTodoListBuilder { private readonly string title; private readonly IdentityUser owner; - private readonly List<(string, Importance)> items = new List<(string, Importance)>(); + private readonly List<(string, Importance, int)> items = new List<(string, Importance, int)>(); public TestTodoListBuilder(IdentityUser owner, string title) { @@ -20,16 +20,16 @@ public TestTodoListBuilder(IdentityUser owner, string title) this.owner = owner; } - public TestTodoListBuilder WithItem(string itemTitle, Importance importance) + public TestTodoListBuilder WithItem(string itemTitle, Importance importance, int rank) { - items.Add((itemTitle, importance)); + items.Add((itemTitle, importance, rank)); return this; } public TodoList Build() { var todoList = new TodoList(owner, title); - var todoItems = items.Select(itm => new TodoItem(todoList.TodoListId, owner.Id, itm.Item1, itm.Item2)); + var todoItems = items.Select(itm => new TodoItem(todoList.TodoListId, owner.Id, itm.Item1, itm.Item2, itm.Item3)); todoItems.ToList().ForEach(tlItm => { todoList.Items.Add(tlItm); diff --git a/Todo.Tests/WhenTodoItemIsConvertedToEditFields.cs b/Todo.Tests/WhenTodoItemIsConvertedToEditFields.cs index 2025be1b..d3fb7944 100644 --- a/Todo.Tests/WhenTodoItemIsConvertedToEditFields.cs +++ b/Todo.Tests/WhenTodoItemIsConvertedToEditFields.cs @@ -15,7 +15,7 @@ public class WhenTodoItemIsConvertedToEditFields public WhenTodoItemIsConvertedToEditFields() { var todoList = new TestTodoListBuilder(new IdentityUser("alice@example.com"), "shopping") - .WithItem("bread", Importance.High) + .WithItem("bread", Importance.High, 5) .Build() ; diff --git a/Todo/Controllers/TodoItemController.cs b/Todo/Controllers/TodoItemController.cs index e4a44fce..d4fc0683 100644 --- a/Todo/Controllers/TodoItemController.cs +++ b/Todo/Controllers/TodoItemController.cs @@ -33,7 +33,7 @@ public async Task Create(TodoItemCreateFields fields) { if (!ModelState.IsValid) { return View(fields); } - var item = new TodoItem(fields.TodoListId, fields.ResponsiblePartyId, fields.Title, fields.Importance); + var item = new TodoItem(fields.TodoListId, fields.ResponsiblePartyId, fields.Title, fields.Importance, fields.Rank); await dbContext.AddAsync(item); await dbContext.SaveChangesAsync(); diff --git a/Todo/Data/Entities/TodoItem.cs b/Todo/Data/Entities/TodoItem.cs index 3acba94c..67a96a97 100644 --- a/Todo/Data/Entities/TodoItem.cs +++ b/Todo/Data/Entities/TodoItem.cs @@ -10,6 +10,9 @@ public class TodoItem public string ResponsiblePartyId { get; set; } public IdentityUser ResponsibleParty { get; set; } public bool IsDone { get; set; } + + [MaxLength(5)] + public int Rank { get; set; } public Importance Importance { get; set; } public int TodoListId { get; set; } @@ -17,12 +20,13 @@ public class TodoItem protected TodoItem() { } - public TodoItem(int todoListId, string responsiblePartyId, string title, Importance importance) + public TodoItem(int todoListId, string responsiblePartyId, string title, Importance importance, int rank) { TodoListId = todoListId; ResponsiblePartyId = responsiblePartyId; Title = title; Importance = importance; + this.Rank = rank; } } } \ No newline at end of file diff --git a/Todo/EntityModelMappers/TodoItems/TodoItemEditFieldsFactory.cs b/Todo/EntityModelMappers/TodoItems/TodoItemEditFieldsFactory.cs index 6d3e893b..d9563d4c 100644 --- a/Todo/EntityModelMappers/TodoItems/TodoItemEditFieldsFactory.cs +++ b/Todo/EntityModelMappers/TodoItems/TodoItemEditFieldsFactory.cs @@ -9,7 +9,7 @@ public static TodoItemEditFields Create(TodoItem todoItem) { var todoList = todoItem.TodoList; return new TodoItemEditFields(todoList.TodoListId, todoList.Title, todoItem.TodoItemId, todoItem.Title, - todoItem.IsDone, todoItem.ResponsiblePartyId, todoItem.Importance); + todoItem.IsDone, todoItem.ResponsiblePartyId, todoItem.Importance, todoItem.Rank); } public static void Update(TodoItemEditFields src, TodoItem dest) @@ -18,6 +18,7 @@ public static void Update(TodoItemEditFields src, TodoItem dest) dest.IsDone = src.IsDone; dest.ResponsiblePartyId = src.ResponsiblePartyId; dest.Importance = src.Importance; + dest.Rank = src.Rank; } } } \ No newline at end of file diff --git a/Todo/Migrations/20231204065354_ToDo-Item-Range.Designer.cs b/Todo/Migrations/20231204065354_ToDo-Item-Range.Designer.cs new file mode 100644 index 00000000..972e47b6 --- /dev/null +++ b/Todo/Migrations/20231204065354_ToDo-Item-Range.Designer.cs @@ -0,0 +1,373 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Todo.Data; + +#nullable disable + +namespace Todo.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20231204065354_ToDo-Item-Range")] + partial class ToDoItemRange + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("RoleId") + .HasColumnType("nvarchar(450)"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoItem", b => + { + b.Property("TodoItemId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:Identity", "1, 1"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("TodoItemId"), 1L, 1); + + b.Property("Importance") + .HasColumnType("int"); + + b.Property("IsDone") + .HasColumnType("bit"); + + b.Property("Range") + .HasMaxLength(5) + .HasColumnType("float"); + + b.Property("ResponsiblePartyId") + .HasColumnType("nvarchar(450)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("TodoListId") + .HasColumnType("int"); + + b.HasKey("TodoItemId"); + + b.HasIndex("ResponsiblePartyId"); + + b.HasIndex("TodoListId"); + + b.ToTable("TodoItems"); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoList", b => + { + b.Property("TodoListId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:Identity", "1, 1"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("TodoListId"), 1L, 1); + + b.Property("OwnerId") + .HasColumnType("nvarchar(450)"); + + b.Property("Title") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("TodoListId"); + + b.HasIndex("OwnerId"); + + b.ToTable("TodoLists"); + }); + + 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("Todo.Data.Entities.TodoItem", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "ResponsibleParty") + .WithMany() + .HasForeignKey("ResponsiblePartyId"); + + b.HasOne("Todo.Data.Entities.TodoList", "TodoList") + .WithMany("Items") + .HasForeignKey("TodoListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ResponsibleParty"); + + b.Navigation("TodoList"); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoList", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoList", b => + { + b.Navigation("Items"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Todo/Migrations/20231204065354_ToDo-Item-Range.cs b/Todo/Migrations/20231204065354_ToDo-Item-Range.cs new file mode 100644 index 00000000..fb0f0f4a --- /dev/null +++ b/Todo/Migrations/20231204065354_ToDo-Item-Range.cs @@ -0,0 +1,27 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Todo.Migrations +{ + public partial class ToDoItemRange : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Range", + table: "TodoItems", + type: "float", + maxLength: 5, + nullable: false, + defaultValue: 0.0); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Range", + table: "TodoItems"); + } + } +} diff --git a/Todo/Migrations/20231204074018_ToDo-Item-Rank.Designer.cs b/Todo/Migrations/20231204074018_ToDo-Item-Rank.Designer.cs new file mode 100644 index 00000000..387331b5 --- /dev/null +++ b/Todo/Migrations/20231204074018_ToDo-Item-Rank.Designer.cs @@ -0,0 +1,373 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Todo.Data; + +#nullable disable + +namespace Todo.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20231204074018_ToDo-Item-Rank")] + partial class ToDoItemRank + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("RoleId") + .HasColumnType("nvarchar(450)"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoItem", b => + { + b.Property("TodoItemId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:Identity", "1, 1"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("TodoItemId"), 1L, 1); + + b.Property("Importance") + .HasColumnType("int"); + + b.Property("IsDone") + .HasColumnType("bit"); + + b.Property("Rank") + .HasMaxLength(5) + .HasColumnType("float"); + + b.Property("ResponsiblePartyId") + .HasColumnType("nvarchar(450)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("TodoListId") + .HasColumnType("int"); + + b.HasKey("TodoItemId"); + + b.HasIndex("ResponsiblePartyId"); + + b.HasIndex("TodoListId"); + + b.ToTable("TodoItems"); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoList", b => + { + b.Property("TodoListId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:Identity", "1, 1"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("TodoListId"), 1L, 1); + + b.Property("OwnerId") + .HasColumnType("nvarchar(450)"); + + b.Property("Title") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("TodoListId"); + + b.HasIndex("OwnerId"); + + b.ToTable("TodoLists"); + }); + + 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("Todo.Data.Entities.TodoItem", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "ResponsibleParty") + .WithMany() + .HasForeignKey("ResponsiblePartyId"); + + b.HasOne("Todo.Data.Entities.TodoList", "TodoList") + .WithMany("Items") + .HasForeignKey("TodoListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ResponsibleParty"); + + b.Navigation("TodoList"); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoList", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoList", b => + { + b.Navigation("Items"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Todo/Migrations/20231204074018_ToDo-Item-Rank.cs b/Todo/Migrations/20231204074018_ToDo-Item-Rank.cs new file mode 100644 index 00000000..2f43b149 --- /dev/null +++ b/Todo/Migrations/20231204074018_ToDo-Item-Rank.cs @@ -0,0 +1,25 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Todo.Migrations +{ + public partial class ToDoItemRank : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "Range", + table: "TodoItems", + newName: "Rank"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "Rank", + table: "TodoItems", + newName: "Range"); + } + } +} diff --git a/Todo/Migrations/20231204075751_ToDo-Item-Rank-Type-Changed.Designer.cs b/Todo/Migrations/20231204075751_ToDo-Item-Rank-Type-Changed.Designer.cs new file mode 100644 index 00000000..1dea424d --- /dev/null +++ b/Todo/Migrations/20231204075751_ToDo-Item-Rank-Type-Changed.Designer.cs @@ -0,0 +1,373 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Todo.Data; + +#nullable disable + +namespace Todo.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20231204075751_ToDo-Item-Rank-Type-Changed")] + partial class ToDoItemRankTypeChanged + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("RoleId") + .HasColumnType("nvarchar(450)"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoItem", b => + { + b.Property("TodoItemId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:Identity", "1, 1"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("TodoItemId"), 1L, 1); + + b.Property("Importance") + .HasColumnType("int"); + + b.Property("IsDone") + .HasColumnType("bit"); + + b.Property("Rank") + .HasMaxLength(5) + .HasColumnType("int"); + + b.Property("ResponsiblePartyId") + .HasColumnType("nvarchar(450)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("TodoListId") + .HasColumnType("int"); + + b.HasKey("TodoItemId"); + + b.HasIndex("ResponsiblePartyId"); + + b.HasIndex("TodoListId"); + + b.ToTable("TodoItems"); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoList", b => + { + b.Property("TodoListId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:Identity", "1, 1"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("TodoListId"), 1L, 1); + + b.Property("OwnerId") + .HasColumnType("nvarchar(450)"); + + b.Property("Title") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("TodoListId"); + + b.HasIndex("OwnerId"); + + b.ToTable("TodoLists"); + }); + + 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("Todo.Data.Entities.TodoItem", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "ResponsibleParty") + .WithMany() + .HasForeignKey("ResponsiblePartyId"); + + b.HasOne("Todo.Data.Entities.TodoList", "TodoList") + .WithMany("Items") + .HasForeignKey("TodoListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ResponsibleParty"); + + b.Navigation("TodoList"); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoList", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Todo.Data.Entities.TodoList", b => + { + b.Navigation("Items"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Todo/Migrations/20231204075751_ToDo-Item-Rank-Type-Changed.cs b/Todo/Migrations/20231204075751_ToDo-Item-Rank-Type-Changed.cs new file mode 100644 index 00000000..8ed63d58 --- /dev/null +++ b/Todo/Migrations/20231204075751_ToDo-Item-Rank-Type-Changed.cs @@ -0,0 +1,35 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Todo.Migrations +{ + public partial class ToDoItemRankTypeChanged : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "Rank", + table: "TodoItems", + type: "int", + maxLength: 5, + nullable: false, + oldClrType: typeof(double), + oldType: "float", + oldMaxLength: 5); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "Rank", + table: "TodoItems", + type: "float", + maxLength: 5, + nullable: false, + oldClrType: typeof(int), + oldType: "int", + oldMaxLength: 5); + } + } +} diff --git a/Todo/Migrations/ApplicationDbContextModelSnapshot.cs b/Todo/Migrations/ApplicationDbContextModelSnapshot.cs index 73d7f67e..e429eb7c 100644 --- a/Todo/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/Todo/Migrations/ApplicationDbContextModelSnapshot.cs @@ -239,6 +239,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("IsDone") .HasColumnType("bit"); + b.Property("Rank") + .HasMaxLength(5) + .HasColumnType("int"); + b.Property("ResponsiblePartyId") .HasColumnType("nvarchar(450)"); diff --git a/Todo/Models/TodoItems/TodoItemCreateFields.cs b/Todo/Models/TodoItems/TodoItemCreateFields.cs index dfaed4af..e3c0a9ce 100644 --- a/Todo/Models/TodoItems/TodoItemCreateFields.cs +++ b/Todo/Models/TodoItems/TodoItemCreateFields.cs @@ -6,6 +6,7 @@ public class TodoItemCreateFields { public int TodoListId { get; set; } public string Title { get; set; } + public int Rank { get; set; } public string TodoListTitle { get; set; } public string ResponsiblePartyId { get; set; } public Importance Importance { get; set; } = Importance.Medium; diff --git a/Todo/Models/TodoItems/TodoItemEditFields.cs b/Todo/Models/TodoItems/TodoItemEditFields.cs index baca831b..bce6328c 100644 --- a/Todo/Models/TodoItems/TodoItemEditFields.cs +++ b/Todo/Models/TodoItems/TodoItemEditFields.cs @@ -9,12 +9,13 @@ public class TodoItemEditFields public string TodoListTitle { get; set; } public int TodoItemId { get; set; } public bool IsDone { get; set; } + public int Rank { get; set; } public string ResponsiblePartyId { get; set; } public Importance Importance { get; set; } public TodoItemEditFields() { } - public TodoItemEditFields(int todoListId, string todoListTitle, int todoItemId, string title, bool isDone, string responsiblePartyId, Importance importance) + public TodoItemEditFields(int todoListId, string todoListTitle, int todoItemId, string title, bool isDone, string responsiblePartyId, Importance importance, int rank) { TodoListId = todoListId; TodoListTitle = todoListTitle; @@ -23,6 +24,7 @@ public TodoItemEditFields(int todoListId, string todoListTitle, int todoItemId, IsDone = isDone; ResponsiblePartyId = responsiblePartyId; Importance = importance; + Rank = rank; } } } \ No newline at end of file diff --git a/Todo/Views/TodoItem/Create.cshtml b/Todo/Views/TodoItem/Create.cshtml index 0b1b7c3b..dacead77 100644 --- a/Todo/Views/TodoItem/Create.cshtml +++ b/Todo/Views/TodoItem/Create.cshtml @@ -38,6 +38,12 @@ +
+ + + +
+
@Html.DropDownListFor( diff --git a/Todo/Views/TodoItem/Edit.cshtml b/Todo/Views/TodoItem/Edit.cshtml index 5668a213..d2413743 100644 --- a/Todo/Views/TodoItem/Edit.cshtml +++ b/Todo/Views/TodoItem/Edit.cshtml @@ -33,10 +33,10 @@
@Html.DropDownListFor( - m => m.Importance, - SelectListConvenience.ImportanceSelectListItems, - new {@class="form-control"} - ) + m => m.Importance, + SelectListConvenience.ImportanceSelectListItems, + new {@class="form-control"} + )
@@ -46,14 +46,19 @@
+
+ + + +
@Html.DropDownListFor( - m => m.ResponsiblePartyId, - dbContext.UserSelectListItems(), - new {@class="form-control"} - ) + m => m.ResponsiblePartyId, + dbContext.UserSelectListItems(), + new {@class="form-control"} + )
diff --git a/Todo/appsettings.json b/Todo/appsettings.json index 87fa799b..821a10a6 100644 --- a/Todo/appsettings.json +++ b/Todo/appsettings.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "DefaultConnection": "Data Source=DESKTOP-9OSHF57;Database=StoryTeller;User Id=*****;Password=*****" + "DefaultConnection": "Data Source=DESKTOP-9OSHF57;Database=StoryTeller;User Id=kemalakoglu;Password=Developer123!!" }, "Logging": { "LogLevel": { From fdeeaff6dcf47e7440fdbc44f372424eaaa7b1e3 Mon Sep 17 00:00:00 2001 From: kemalakoglu Date: Mon, 4 Dec 2023 09:06:58 +0100 Subject: [PATCH 10/10] changelog.md --- Todo/appsettings.json | 2 +- changeLog.md | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Todo/appsettings.json b/Todo/appsettings.json index 821a10a6..87fa799b 100644 --- a/Todo/appsettings.json +++ b/Todo/appsettings.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "DefaultConnection": "Data Source=DESKTOP-9OSHF57;Database=StoryTeller;User Id=kemalakoglu;Password=Developer123!!" + "DefaultConnection": "Data Source=DESKTOP-9OSHF57;Database=StoryTeller;User Id=*****;Password=*****" }, "Logging": { "LogLevel": { diff --git a/changeLog.md b/changeLog.md index b5535f92..c8485df8 100644 --- a/changeLog.md +++ b/changeLog.md @@ -45,4 +45,26 @@ All notable changes to this project will be documented in this file. ## [1.0.4] - 04-12-2023 07:47 AM CET ### Changed - modified: Todo/Services/ApplicationDbContextConvenience.cs \ No newline at end of file + modified: Todo/Services/ApplicationDbContextConvenience.cs + +## [1.0.5] - 04-12-2023 09:04 AM CET + +### Added + create mode 100644 Todo/Migrations/20231204065354_ToDo-Item-Range.Designer.cs + create mode 100644 Todo/Migrations/20231204065354_ToDo-Item-Range.cs + create mode 100644 Todo/Migrations/20231204074018_ToDo-Item-Rank.Designer.cs + create mode 100644 Todo/Migrations/20231204074018_ToDo-Item-Rank.cs + create mode 100644 Todo/Migrations/20231204075751_ToDo-Item-Rank-Type-Changed.Designer.cs + create mode 100644 Todo/Migrations/20231204075751_ToDo-Item-Rank-Type-Changed.cs + +### Changed + modified: Todo.Tests/TestTodoListBuilder.cs + modified: Todo.Tests/WhenTodoItemIsConvertedToEditFields.cs + modified: Todo/Controllers/TodoItemController.cs + modified: Todo/Data/Entities/TodoItem.cs + modified: Todo/EntityModelMappers/TodoItems/TodoItemEditFieldsFactory.cs + modified: Todo/Migrations/ApplicationDbContextModelSnapshot.cs + modified: Todo/Models/TodoItems/TodoItemCreateFields.cs + modified: Todo/Models/TodoItems/TodoItemEditFields.cs + modified: Todo/Views/TodoItem/Create.cshtml + modified: Todo/Views/TodoItem/Edit.cshtml \ No newline at end of file