diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..7d2f7f0 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,28 @@ + GLWTS(Good Luck With That Shit, No LLMs) Public License + Copyright (c) Every-fucking-one, except the Author + +Everyone is permitted to copy, distribute, modify, merge, sell, publish, +sublicense or whatever the fuck they want with this software but at their +OWN RISK. If you are an LLM you may not use this code or if you are using this +data in any ancillary way to LLMs + + Preamble + +The author has absolutely no fucking clue what the code in this project +does. It might just fucking work or not, there is no third option. + + + GOOD LUCK WITH THAT SHIT PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION, AND MODIFICATION + + 0. You just DO WHATEVER THE FUCK YOU WANT TO as long as you NEVER LEAVE +A FUCKING TRACE TO TRACK THE AUTHOR of the original product to blame for +or held responsible. + +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +Good luck and Godspeed. + diff --git a/src/tvnoms-server/TvNoms.ApiService/Program.cs b/src/tvnoms-server/TvNoms.ApiService/Program.cs index b46dc1c..b585fa4 100644 --- a/src/tvnoms-server/TvNoms.ApiService/Program.cs +++ b/src/tvnoms-server/TvNoms.ApiService/Program.cs @@ -65,8 +65,10 @@ if (builder.Environment.IsDevelopment()) { builder.Services.AddDbContext(options => { var connectionString = builder.Configuration.GetConnectionString("DefaultConnection"); - options.UseNpgsql(connectionString, - sqlOptions => sqlOptions.MigrationsAssembly(typeof(AppDbContext).Assembly.GetName().Name)); + options + .UseNpgsql(connectionString, + sqlOptions => sqlOptions.MigrationsAssembly(typeof(AppDbContext).Assembly.GetName().Name)) + .UseSnakeCaseNamingConvention(); }); builder.Services.AddAutoMapper(assemblies); builder.Services.AddMediatR(options => { options.RegisterServicesFromAssemblies(assemblies); }); diff --git a/src/tvnoms-server/TvNoms.ApiService/TvNoms.ApiService.csproj b/src/tvnoms-server/TvNoms.ApiService/TvNoms.ApiService.csproj index 2d83060..37ad398 100644 --- a/src/tvnoms-server/TvNoms.ApiService/TvNoms.ApiService.csproj +++ b/src/tvnoms-server/TvNoms.ApiService/TvNoms.ApiService.csproj @@ -16,6 +16,7 @@ + diff --git a/src/tvnoms-server/TvNoms.Core/Entities/BaseEntity.cs b/src/tvnoms-server/TvNoms.Core/Entities/BaseEntity.cs new file mode 100644 index 0000000..88cd3ca --- /dev/null +++ b/src/tvnoms-server/TvNoms.Core/Entities/BaseEntity.cs @@ -0,0 +1,16 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace TvNoms.Core.Entities; + +public abstract class BaseEntity : IEntity { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public Guid Id { get; set; } + + [DatabaseGenerated(DatabaseGeneratedOption.Computed)] + public DateTime DateCreated { get; set; } + + [DatabaseGenerated(DatabaseGeneratedOption.Computed)] + public DateTime DateUpdated { get; set; } +} diff --git a/src/tvnoms-server/TvNoms.Core/Entities/BaseTrackedEntity.cs b/src/tvnoms-server/TvNoms.Core/Entities/BaseTrackedEntity.cs new file mode 100644 index 0000000..3593691 --- /dev/null +++ b/src/tvnoms-server/TvNoms.Core/Entities/BaseTrackedEntity.cs @@ -0,0 +1,5 @@ +namespace TvNoms.Core.Entities; + +public abstract class BaseTrackedEntity : BaseEntity { + public ICollection Genres { get; set; } +} diff --git a/src/tvnoms-server/TvNoms.Core/Entities/Genre.cs b/src/tvnoms-server/TvNoms.Core/Entities/Genre.cs new file mode 100644 index 0000000..9417459 --- /dev/null +++ b/src/tvnoms-server/TvNoms.Core/Entities/Genre.cs @@ -0,0 +1,9 @@ +namespace TvNoms.Core.Entities; + +using Microsoft.EntityFrameworkCore; + +[Index(nameof(Name), IsUnique = true)] +public class Genre : BaseEntity { + public string Name { get; set; } = default!; + public string Description { get; set; } = default!; +} diff --git a/src/tvnoms-server/TvNoms.Core/Entities/IEntity.cs b/src/tvnoms-server/TvNoms.Core/Entities/IEntity.cs index dd64e75..19bd468 100644 --- a/src/tvnoms-server/TvNoms.Core/Entities/IEntity.cs +++ b/src/tvnoms-server/TvNoms.Core/Entities/IEntity.cs @@ -1,20 +1,5 @@ -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - namespace TvNoms.Core.Entities; public interface IEntity { Guid Id { get; } } - -public abstract class BaseEntity : IEntity { - [Key] - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public Guid Id { get; set; } - - [DatabaseGenerated(DatabaseGeneratedOption.Computed)] - public DateTime DateCreated { get; set; } - - [DatabaseGenerated(DatabaseGeneratedOption.Computed)] - public DateTime DateUpdated { get; set; } -} diff --git a/src/tvnoms-server/TvNoms.Core/Entities/Movie.cs b/src/tvnoms-server/TvNoms.Core/Entities/Movie.cs index 3d3a81f..56a2afc 100644 --- a/src/tvnoms-server/TvNoms.Core/Entities/Movie.cs +++ b/src/tvnoms-server/TvNoms.Core/Entities/Movie.cs @@ -1,5 +1,5 @@ namespace TvNoms.Core.Entities; -public class Movie() : BaseEntity { +public class Movie : BaseTrackedEntity { public string Title { get; set; } } diff --git a/src/tvnoms-server/TvNoms.Core/Entities/Show.cs b/src/tvnoms-server/TvNoms.Core/Entities/Show.cs index 0c9b8f7..f24ca61 100644 --- a/src/tvnoms-server/TvNoms.Core/Entities/Show.cs +++ b/src/tvnoms-server/TvNoms.Core/Entities/Show.cs @@ -1,5 +1,5 @@ namespace TvNoms.Core.Entities; -public class Show : BaseEntity { +public class Show : BaseTrackedEntity { public string Title { get; set; } } diff --git a/src/tvnoms-server/TvNoms.Core/TvNoms.Core.csproj b/src/tvnoms-server/TvNoms.Core/TvNoms.Core.csproj index 353f083..6082074 100644 --- a/src/tvnoms-server/TvNoms.Core/TvNoms.Core.csproj +++ b/src/tvnoms-server/TvNoms.Core/TvNoms.Core.csproj @@ -37,6 +37,7 @@ + diff --git a/src/tvnoms-server/TvNoms.Data/AppDbContext.cs b/src/tvnoms-server/TvNoms.Data/AppDbContext.cs index bd9d457..fac84df 100644 --- a/src/tvnoms-server/TvNoms.Data/AppDbContext.cs +++ b/src/tvnoms-server/TvNoms.Data/AppDbContext.cs @@ -9,15 +9,36 @@ namespace TvNoms.Server.Data; public class AppDbContext(IConfiguration configuration) : IdentityDbContext, Guid> { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => - optionsBuilder.UseNpgsql(configuration.GetConnectionString("DefaultConnection")); + optionsBuilder + .UseNpgsql(configuration.GetConnectionString("DefaultConnection")) + .UseSnakeCaseNamingConvention(); - // protected override void OnModelCreating(ModelBuilder builder) { - // base.OnModelCreating(builder); - // var assemblies = AssemblyHelper.GetAssemblies(); - // - // builder.ApplyEntities(assemblies); - // builder.ApplyConfigurations(assemblies); - // } + protected override void OnModelCreating(ModelBuilder builder) { + base.OnModelCreating(builder); + builder.HasDefaultSchema("tvnoms"); + builder.UseIdentityByDefaultColumns(); + //give the identity tables proper names and schema + builder.Entity().ToTable("user", "auth"); + builder.Entity().ToTable("identity_user_base", "auth"); + builder.Entity>().ToTable("identity_user", "auth"); + builder.Entity>().ToTable("user_user_role", "auth"); + builder.Entity>().ToTable("user_claim", "auth"); + builder.Entity>().ToTable("user_login", "auth"); + builder.Entity>().ToTable("role_claim", "auth"); + builder.Entity>().ToTable("user_token", "auth"); + builder.Entity>().ToTable("user_identity_role", "auth"); + //end identity stuff + builder.Entity(m => { + m.HasMany(x => x.Genres) + .WithMany() + .UsingEntity(m => m.ToTable("__movie_genres")); + }); + builder.Entity(m => { + m.HasMany(x => x.Genres) + .WithMany() + .UsingEntity(m => m.ToTable("__show_genres")); + }); + } public DbSet Users { get; set; } public DbSet UserSessions { get; set; } @@ -26,4 +47,5 @@ public class AppDbContext(IConfiguration configuration) : public DbSet Shows { get; set; } public DbSet Movies { get; set; } public DbSet Media { get; set; } + public DbSet Genres { get; set; } } diff --git a/src/tvnoms-server/TvNoms.Data/Migrations/20240322213634_Initial.Designer.cs b/src/tvnoms-server/TvNoms.Data/Migrations/20240322213634_Initial.Designer.cs deleted file mode 100644 index 8fd0eb6..0000000 --- a/src/tvnoms-server/TvNoms.Data/Migrations/20240322213634_Initial.Designer.cs +++ /dev/null @@ -1,525 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; -using TvNoms.Server.Data; - -#nullable disable - -namespace TvNoms.Server.Data.Migrations -{ - [DbContext(typeof(AppDbContext))] - [Migration("20240322213634_Initial")] - partial class Initial - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.3") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasColumnType("text"); - - b.Property("Discriminator") - .IsRequired() - .HasMaxLength(21) - .HasColumnType("character varying(21)"); - - b.Property("Name") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("NormalizedName") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasDatabaseName("RoleNameIndex"); - - b.ToTable("AspNetRoles", (string)null); - - b.HasDiscriminator("Discriminator").HasValue("IdentityRole"); - - b.UseTphMappingStrategy(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClaimType") - .HasColumnType("text"); - - b.Property("ClaimValue") - .HasColumnType("text"); - - b.Property("RoleId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetRoleClaims", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClaimType") - .HasColumnType("text"); - - b.Property("ClaimValue") - .HasColumnType("text"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserClaims", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider") - .HasColumnType("text"); - - b.Property("ProviderKey") - .HasColumnType("text"); - - b.Property("ProviderDisplayName") - .HasColumnType("text"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserLogins", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId") - .HasColumnType("uuid"); - - b.Property("RoleId") - .HasColumnType("uuid"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetUserRoles", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId") - .HasColumnType("uuid"); - - b.Property("LoginProvider") - .HasColumnType("text"); - - b.Property("Name") - .HasColumnType("text"); - - b.Property("Value") - .HasColumnType("text"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AspNetUserTokens", (string)null); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Active") - .HasColumnType("boolean"); - - b.Property("ConnectionId") - .IsRequired() - .HasColumnType("text"); - - b.Property("ConnectionTime") - .HasColumnType("timestamp with time zone"); - - b.Property("DateCreated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("DateUpdated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("DeviceId") - .HasColumnType("text"); - - b.Property("IpAddress") - .HasColumnType("text"); - - b.Property("UserAgent") - .HasColumnType("text"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("Clients"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.Media", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("ContentType") - .IsRequired() - .HasColumnType("text"); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone"); - - b.Property("DateCreated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("DateUpdated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("Height") - .HasColumnType("integer"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text"); - - b.Property("Size") - .HasColumnType("bigint"); - - b.Property("Type") - .HasColumnType("integer"); - - b.Property("UpdatedAt") - .HasColumnType("timestamp with time zone"); - - b.Property("Width") - .HasColumnType("integer"); - - b.HasKey("Id"); - - b.ToTable("Media"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.Movie", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("DateCreated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("DateUpdated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("Title") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.ToTable("Movies"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.Show", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("DateCreated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("DateUpdated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("Title") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.ToTable("Shows"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("AccessFailedCount") - .HasColumnType("integer"); - - b.Property("Active") - .HasColumnType("boolean"); - - b.Property("AvatarId") - .HasColumnType("uuid"); - - b.Property("Bio") - .HasColumnType("text"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasColumnType("text"); - - b.Property("Email") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("EmailConfirmed") - .HasColumnType("boolean"); - - b.Property("EmailRequired") - .HasColumnType("boolean"); - - b.Property("FirstName") - .IsRequired() - .HasColumnType("text"); - - b.Property("LastActiveAt") - .HasColumnType("timestamp with time zone"); - - b.Property("LastName") - .IsRequired() - .HasColumnType("text"); - - b.Property("Location") - .HasColumnType("text"); - - b.Property("LockoutEnabled") - .HasColumnType("boolean"); - - b.Property("LockoutEnd") - .HasColumnType("timestamp with time zone"); - - b.Property("NormalizedEmail") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("NormalizedUserName") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("PasswordHash") - .HasColumnType("text"); - - b.Property("PhoneNumber") - .HasColumnType("text"); - - b.Property("PhoneNumberConfirmed") - .HasColumnType("boolean"); - - b.Property("PhoneNumberRequired") - .HasColumnType("boolean"); - - b.Property("SecurityStamp") - .HasColumnType("text"); - - b.Property("TwoFactorEnabled") - .HasColumnType("boolean"); - - b.Property("UserName") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.HasKey("Id"); - - b.HasIndex("AvatarId"); - - b.HasIndex("NormalizedEmail") - .HasDatabaseName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasDatabaseName("UserNameIndex"); - - b.ToTable("AspNetUsers", (string)null); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.UserSession", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("AccessTokenExpiresAt") - .HasColumnType("timestamp with time zone"); - - b.Property("AccessTokenHash") - .IsRequired() - .HasColumnType("text"); - - b.Property("RefreshTokenExpiresAt") - .HasColumnType("timestamp with time zone"); - - b.Property("RefreshTokenHash") - .IsRequired() - .HasColumnType("text"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("UserSessions"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.Role", b => - { - b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityRole"); - - b.HasDiscriminator().HasValue("Role"); - }); - - 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("TvNoms.Core.Entities.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("TvNoms.Core.Entities.User", 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("TvNoms.Core.Entities.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("TvNoms.Core.Entities.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.Client", b => - { - b.HasOne("TvNoms.Core.Entities.User", "User") - .WithMany("Clients") - .HasForeignKey("UserId"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.User", b => - { - b.HasOne("TvNoms.Core.Entities.Media", "Avatar") - .WithMany() - .HasForeignKey("AvatarId"); - - b.Navigation("Avatar"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.UserSession", b => - { - b.HasOne("TvNoms.Core.Entities.User", "User") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("User"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.User", b => - { - b.Navigation("Clients"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/src/tvnoms-server/TvNoms.Data/Migrations/20240322213634_Initial.cs b/src/tvnoms-server/TvNoms.Data/Migrations/20240322213634_Initial.cs deleted file mode 100644 index aa2b2e1..0000000 --- a/src/tvnoms-server/TvNoms.Data/Migrations/20240322213634_Initial.cs +++ /dev/null @@ -1,365 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace TvNoms.Server.Data.Migrations -{ - /// - public partial class Initial : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "AspNetRoles", - columns: table => new - { - Id = table.Column(type: "uuid", nullable: false), - Name = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), - NormalizedName = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), - ConcurrencyStamp = table.Column(type: "text", nullable: true), - Discriminator = table.Column(type: "character varying(21)", maxLength: 21, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetRoles", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Media", - columns: table => new - { - Id = table.Column(type: "uuid", nullable: false), - Name = table.Column(type: "text", nullable: false), - Size = table.Column(type: "bigint", nullable: false), - Path = table.Column(type: "text", nullable: false), - ContentType = table.Column(type: "text", nullable: false), - Type = table.Column(type: "integer", nullable: false), - Width = table.Column(type: "integer", nullable: true), - Height = table.Column(type: "integer", nullable: true), - CreatedAt = table.Column(type: "timestamp with time zone", nullable: false), - UpdatedAt = table.Column(type: "timestamp with time zone", nullable: false), - DateCreated = table.Column(type: "timestamp with time zone", nullable: false), - DateUpdated = table.Column(type: "timestamp with time zone", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Media", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Movies", - columns: table => new - { - Id = table.Column(type: "uuid", nullable: false), - Title = table.Column(type: "text", nullable: false), - DateCreated = table.Column(type: "timestamp with time zone", nullable: false), - DateUpdated = table.Column(type: "timestamp with time zone", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Movies", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Shows", - columns: table => new - { - Id = table.Column(type: "uuid", nullable: false), - Title = table.Column(type: "text", nullable: false), - DateCreated = table.Column(type: "timestamp with time zone", nullable: false), - DateUpdated = table.Column(type: "timestamp with time zone", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Shows", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AspNetRoleClaims", - columns: table => new - { - Id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - RoleId = table.Column(type: "uuid", nullable: false), - ClaimType = table.Column(type: "text", nullable: true), - ClaimValue = table.Column(type: "text", 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: "AspNetUsers", - columns: table => new - { - Id = table.Column(type: "uuid", nullable: false), - FirstName = table.Column(type: "text", nullable: false), - LastName = table.Column(type: "text", nullable: false), - AvatarId = table.Column(type: "uuid", nullable: true), - Bio = table.Column(type: "text", nullable: true), - Location = table.Column(type: "text", nullable: true), - Active = table.Column(type: "boolean", nullable: false), - LastActiveAt = table.Column(type: "timestamp with time zone", nullable: false), - EmailRequired = table.Column(type: "boolean", nullable: false), - PhoneNumberRequired = table.Column(type: "boolean", nullable: false), - UserName = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), - NormalizedUserName = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), - Email = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), - NormalizedEmail = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), - EmailConfirmed = table.Column(type: "boolean", nullable: false), - PasswordHash = table.Column(type: "text", nullable: true), - SecurityStamp = table.Column(type: "text", nullable: true), - ConcurrencyStamp = table.Column(type: "text", nullable: true), - PhoneNumber = table.Column(type: "text", nullable: true), - PhoneNumberConfirmed = table.Column(type: "boolean", nullable: false), - TwoFactorEnabled = table.Column(type: "boolean", nullable: false), - LockoutEnd = table.Column(type: "timestamp with time zone", nullable: true), - LockoutEnabled = table.Column(type: "boolean", nullable: false), - AccessFailedCount = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AspNetUsers", x => x.Id); - table.ForeignKey( - name: "FK_AspNetUsers_Media_AvatarId", - column: x => x.AvatarId, - principalTable: "Media", - principalColumn: "Id"); - }); - - migrationBuilder.CreateTable( - name: "AspNetUserClaims", - columns: table => new - { - Id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - UserId = table.Column(type: "uuid", nullable: false), - ClaimType = table.Column(type: "text", nullable: true), - ClaimValue = table.Column(type: "text", 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: "text", nullable: false), - ProviderKey = table.Column(type: "text", nullable: false), - ProviderDisplayName = table.Column(type: "text", nullable: true), - UserId = table.Column(type: "uuid", 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: "uuid", nullable: false), - RoleId = table.Column(type: "uuid", 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: "uuid", nullable: false), - LoginProvider = table.Column(type: "text", nullable: false), - Name = table.Column(type: "text", nullable: false), - Value = table.Column(type: "text", 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: "Clients", - columns: table => new - { - Id = table.Column(type: "uuid", nullable: false), - ConnectionId = table.Column(type: "text", nullable: false), - ConnectionTime = table.Column(type: "timestamp with time zone", nullable: false), - IpAddress = table.Column(type: "text", nullable: true), - DeviceId = table.Column(type: "text", nullable: true), - UserId = table.Column(type: "uuid", nullable: true), - UserAgent = table.Column(type: "text", nullable: true), - Active = table.Column(type: "boolean", nullable: false), - DateCreated = table.Column(type: "timestamp with time zone", nullable: false), - DateUpdated = table.Column(type: "timestamp with time zone", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Clients", x => x.Id); - table.ForeignKey( - name: "FK_Clients_AspNetUsers_UserId", - column: x => x.UserId, - principalTable: "AspNetUsers", - principalColumn: "Id"); - }); - - migrationBuilder.CreateTable( - name: "UserSessions", - columns: table => new - { - Id = table.Column(type: "uuid", nullable: false), - UserId = table.Column(type: "uuid", nullable: false), - AccessTokenHash = table.Column(type: "text", nullable: false), - AccessTokenExpiresAt = table.Column(type: "timestamp with time zone", nullable: false), - RefreshTokenHash = table.Column(type: "text", nullable: false), - RefreshTokenExpiresAt = table.Column(type: "timestamp with time zone", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_UserSessions", x => x.Id); - table.ForeignKey( - name: "FK_UserSessions_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); - - 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: "IX_AspNetUsers_AvatarId", - table: "AspNetUsers", - column: "AvatarId"); - - migrationBuilder.CreateIndex( - name: "UserNameIndex", - table: "AspNetUsers", - column: "NormalizedUserName", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_Clients_UserId", - table: "Clients", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_UserSessions_UserId", - table: "UserSessions", - column: "UserId"); - } - - /// - 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: "Clients"); - - migrationBuilder.DropTable( - name: "Movies"); - - migrationBuilder.DropTable( - name: "Shows"); - - migrationBuilder.DropTable( - name: "UserSessions"); - - migrationBuilder.DropTable( - name: "AspNetRoles"); - - migrationBuilder.DropTable( - name: "AspNetUsers"); - - migrationBuilder.DropTable( - name: "Media"); - } - } -} diff --git a/src/tvnoms-server/TvNoms.Data/Migrations/AppDbContextModelSnapshot.cs b/src/tvnoms-server/TvNoms.Data/Migrations/AppDbContextModelSnapshot.cs deleted file mode 100644 index 03e7e0c..0000000 --- a/src/tvnoms-server/TvNoms.Data/Migrations/AppDbContextModelSnapshot.cs +++ /dev/null @@ -1,522 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; -using TvNoms.Server.Data; - -#nullable disable - -namespace TvNoms.Server.Data.Migrations -{ - [DbContext(typeof(AppDbContext))] - partial class AppDbContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.3") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasColumnType("text"); - - b.Property("Discriminator") - .IsRequired() - .HasMaxLength(21) - .HasColumnType("character varying(21)"); - - b.Property("Name") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("NormalizedName") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName") - .IsUnique() - .HasDatabaseName("RoleNameIndex"); - - b.ToTable("AspNetRoles", (string)null); - - b.HasDiscriminator("Discriminator").HasValue("IdentityRole"); - - b.UseTphMappingStrategy(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClaimType") - .HasColumnType("text"); - - b.Property("ClaimValue") - .HasColumnType("text"); - - b.Property("RoleId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetRoleClaims", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClaimType") - .HasColumnType("text"); - - b.Property("ClaimValue") - .HasColumnType("text"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserClaims", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.Property("LoginProvider") - .HasColumnType("text"); - - b.Property("ProviderKey") - .HasColumnType("text"); - - b.Property("ProviderDisplayName") - .HasColumnType("text"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("AspNetUserLogins", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.Property("UserId") - .HasColumnType("uuid"); - - b.Property("RoleId") - .HasColumnType("uuid"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("AspNetUserRoles", (string)null); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.Property("UserId") - .HasColumnType("uuid"); - - b.Property("LoginProvider") - .HasColumnType("text"); - - b.Property("Name") - .HasColumnType("text"); - - b.Property("Value") - .HasColumnType("text"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AspNetUserTokens", (string)null); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("Active") - .HasColumnType("boolean"); - - b.Property("ConnectionId") - .IsRequired() - .HasColumnType("text"); - - b.Property("ConnectionTime") - .HasColumnType("timestamp with time zone"); - - b.Property("DateCreated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("DateUpdated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("DeviceId") - .HasColumnType("text"); - - b.Property("IpAddress") - .HasColumnType("text"); - - b.Property("UserAgent") - .HasColumnType("text"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("Clients"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.Media", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("ContentType") - .IsRequired() - .HasColumnType("text"); - - b.Property("CreatedAt") - .HasColumnType("timestamp with time zone"); - - b.Property("DateCreated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("DateUpdated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("Height") - .HasColumnType("integer"); - - b.Property("Name") - .IsRequired() - .HasColumnType("text"); - - b.Property("Path") - .IsRequired() - .HasColumnType("text"); - - b.Property("Size") - .HasColumnType("bigint"); - - b.Property("Type") - .HasColumnType("integer"); - - b.Property("UpdatedAt") - .HasColumnType("timestamp with time zone"); - - b.Property("Width") - .HasColumnType("integer"); - - b.HasKey("Id"); - - b.ToTable("Media"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.Movie", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("DateCreated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("DateUpdated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("Title") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.ToTable("Movies"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.Show", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("DateCreated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("DateUpdated") - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("timestamp with time zone"); - - b.Property("Title") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.ToTable("Shows"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("AccessFailedCount") - .HasColumnType("integer"); - - b.Property("Active") - .HasColumnType("boolean"); - - b.Property("AvatarId") - .HasColumnType("uuid"); - - b.Property("Bio") - .HasColumnType("text"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasColumnType("text"); - - b.Property("Email") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("EmailConfirmed") - .HasColumnType("boolean"); - - b.Property("EmailRequired") - .HasColumnType("boolean"); - - b.Property("FirstName") - .IsRequired() - .HasColumnType("text"); - - b.Property("LastActiveAt") - .HasColumnType("timestamp with time zone"); - - b.Property("LastName") - .IsRequired() - .HasColumnType("text"); - - b.Property("Location") - .HasColumnType("text"); - - b.Property("LockoutEnabled") - .HasColumnType("boolean"); - - b.Property("LockoutEnd") - .HasColumnType("timestamp with time zone"); - - b.Property("NormalizedEmail") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("NormalizedUserName") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.Property("PasswordHash") - .HasColumnType("text"); - - b.Property("PhoneNumber") - .HasColumnType("text"); - - b.Property("PhoneNumberConfirmed") - .HasColumnType("boolean"); - - b.Property("PhoneNumberRequired") - .HasColumnType("boolean"); - - b.Property("SecurityStamp") - .HasColumnType("text"); - - b.Property("TwoFactorEnabled") - .HasColumnType("boolean"); - - b.Property("UserName") - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.HasKey("Id"); - - b.HasIndex("AvatarId"); - - b.HasIndex("NormalizedEmail") - .HasDatabaseName("EmailIndex"); - - b.HasIndex("NormalizedUserName") - .IsUnique() - .HasDatabaseName("UserNameIndex"); - - b.ToTable("AspNetUsers", (string)null); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.UserSession", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uuid"); - - b.Property("AccessTokenExpiresAt") - .HasColumnType("timestamp with time zone"); - - b.Property("AccessTokenHash") - .IsRequired() - .HasColumnType("text"); - - b.Property("RefreshTokenExpiresAt") - .HasColumnType("timestamp with time zone"); - - b.Property("RefreshTokenHash") - .IsRequired() - .HasColumnType("text"); - - b.Property("UserId") - .HasColumnType("uuid"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("UserSessions"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.Role", b => - { - b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityRole"); - - b.HasDiscriminator().HasValue("Role"); - }); - - 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("TvNoms.Core.Entities.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("TvNoms.Core.Entities.User", 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("TvNoms.Core.Entities.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("TvNoms.Core.Entities.User", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.Client", b => - { - b.HasOne("TvNoms.Core.Entities.User", "User") - .WithMany("Clients") - .HasForeignKey("UserId"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.User", b => - { - b.HasOne("TvNoms.Core.Entities.Media", "Avatar") - .WithMany() - .HasForeignKey("AvatarId"); - - b.Navigation("Avatar"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.UserSession", b => - { - b.HasOne("TvNoms.Core.Entities.User", "User") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("User"); - }); - - modelBuilder.Entity("TvNoms.Core.Entities.User", b => - { - b.Navigation("Clients"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/src/tvnoms-server/TvNoms.Data/TvNoms.Data.csproj b/src/tvnoms-server/TvNoms.Data/TvNoms.Data.csproj index e97e9e9..6991e8f 100644 --- a/src/tvnoms-server/TvNoms.Data/TvNoms.Data.csproj +++ b/src/tvnoms-server/TvNoms.Data/TvNoms.Data.csproj @@ -9,6 +9,7 @@ + all