diff --git a/CleanArchitecture/CleanArchitecture.API/CleanArchitecture.API.csproj b/CleanArchitecture/CleanArchitecture.API/CleanArchitecture.API.csproj index 7b2a188..8dcf1e3 100644 --- a/CleanArchitecture/CleanArchitecture.API/CleanArchitecture.API.csproj +++ b/CleanArchitecture/CleanArchitecture.API/CleanArchitecture.API.csproj @@ -7,6 +7,10 @@ + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/CleanArchitecture/CleanArchitecture.Data/InfrastructureServiceRegistration.cs b/CleanArchitecture/CleanArchitecture.Data/InfrastructureServiceRegistration.cs index bab7e21..afa138f 100644 --- a/CleanArchitecture/CleanArchitecture.Data/InfrastructureServiceRegistration.cs +++ b/CleanArchitecture/CleanArchitecture.Data/InfrastructureServiceRegistration.cs @@ -1,6 +1,7 @@ using CleanArchitecture.Application.Contracts.Infrastructure; using CleanArchitecture.Application.Contracts.Persistence; using CleanArchitecture.Application.Models; +using CleanArchitecture.Infrastructure.Email; using CleanArchitecture.Infrastructure.Persistence; using CleanArchitecture.Infrastructure.Repositories; using Microsoft.EntityFrameworkCore; @@ -26,7 +27,7 @@ namespace CleanArchitecture.Infrastructure services.AddScoped(); services.Configure(c =>configuration.GetSection("EmailSettings")); - services.AddTransient(); + services.AddTransient(); return services; } diff --git a/CleanArchitecture/CleanArchitecture.Data/Migrations/20240218123327_cleanArchitectureFromApi.Designer.cs b/CleanArchitecture/CleanArchitecture.Data/Migrations/20240218123327_cleanArchitectureFromApi.Designer.cs new file mode 100644 index 0000000..8757082 --- /dev/null +++ b/CleanArchitecture/CleanArchitecture.Data/Migrations/20240218123327_cleanArchitectureFromApi.Designer.cs @@ -0,0 +1,230 @@ +// +using System; +using CleanArchitecture.Infrastructure.Persistence; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace CleanArchitecture.Data.Migrations +{ + [DbContext(typeof(StreamerDbContext))] + [Migration("20240218123327_cleanArchitectureFromApi")] + partial class cleanArchitectureFromApi + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.2") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("CleanArchitecture.Domain.Actor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Apellido") + .HasColumnType("longtext"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("LastModifiedBy") + .HasColumnType("longtext"); + + b.Property("LastModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Nombre") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Actor"); + }); + + modelBuilder.Entity("CleanArchitecture.Domain.Director", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Apellido") + .HasColumnType("longtext"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("LastModifiedBy") + .HasColumnType("longtext"); + + b.Property("LastModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Nombre") + .HasColumnType("longtext"); + + b.Property("VideoId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("Director"); + }); + + modelBuilder.Entity("CleanArchitecture.Domain.Streamer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("LastModifiedBy") + .HasColumnType("longtext"); + + b.Property("LastModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Nombre") + .HasColumnType("longtext"); + + b.Property("Url") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Streamers"); + }); + + modelBuilder.Entity("CleanArchitecture.Domain.Video", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("DirectorId") + .HasColumnType("int"); + + b.Property("LastModifiedBy") + .HasColumnType("longtext"); + + b.Property("LastModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Nombre") + .HasColumnType("longtext"); + + b.Property("StreamerId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("DirectorId") + .IsUnique(); + + b.HasIndex("StreamerId"); + + b.ToTable("Videos"); + }); + + modelBuilder.Entity("CleanArchitecture.Domain.VideoActor", b => + { + b.Property("VideoId") + .HasColumnType("int"); + + b.Property("ActorId") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("LastModifiedBy") + .HasColumnType("longtext"); + + b.Property("LastModifiedDate") + .HasColumnType("datetime(6)"); + + b.HasKey("VideoId", "ActorId"); + + b.HasIndex("ActorId"); + + b.ToTable("VideoActor"); + }); + + modelBuilder.Entity("CleanArchitecture.Domain.Video", b => + { + b.HasOne("CleanArchitecture.Domain.Director", "Director") + .WithOne("Video") + .HasForeignKey("CleanArchitecture.Domain.Video", "DirectorId"); + + b.HasOne("CleanArchitecture.Domain.Streamer", "Streamer") + .WithMany("Videos") + .HasForeignKey("StreamerId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Director"); + + b.Navigation("Streamer"); + }); + + modelBuilder.Entity("CleanArchitecture.Domain.VideoActor", b => + { + b.HasOne("CleanArchitecture.Domain.Actor", "Actor") + .WithMany() + .HasForeignKey("ActorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("CleanArchitecture.Domain.Video", "Video") + .WithMany() + .HasForeignKey("VideoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Actor"); + + b.Navigation("Video"); + }); + + modelBuilder.Entity("CleanArchitecture.Domain.Director", b => + { + b.Navigation("Video"); + }); + + modelBuilder.Entity("CleanArchitecture.Domain.Streamer", b => + { + b.Navigation("Videos"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/CleanArchitecture/CleanArchitecture.Data/Migrations/20240218123327_cleanArchitectureFromApi.cs b/CleanArchitecture/CleanArchitecture.Data/Migrations/20240218123327_cleanArchitectureFromApi.cs new file mode 100644 index 0000000..6ff4d37 --- /dev/null +++ b/CleanArchitecture/CleanArchitecture.Data/Migrations/20240218123327_cleanArchitectureFromApi.cs @@ -0,0 +1,72 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace CleanArchitecture.Data.Migrations +{ + /// + public partial class cleanArchitectureFromApi : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "CreatedBy", + table: "VideoActor", + type: "longtext", + nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "CreatedDate", + table: "VideoActor", + type: "datetime(6)", + nullable: true); + + migrationBuilder.AddColumn( + name: "Id", + table: "VideoActor", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "LastModifiedBy", + table: "VideoActor", + type: "longtext", + nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "LastModifiedDate", + table: "VideoActor", + type: "datetime(6)", + nullable: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "CreatedBy", + table: "VideoActor"); + + migrationBuilder.DropColumn( + name: "CreatedDate", + table: "VideoActor"); + + migrationBuilder.DropColumn( + name: "Id", + table: "VideoActor"); + + migrationBuilder.DropColumn( + name: "LastModifiedBy", + table: "VideoActor"); + + migrationBuilder.DropColumn( + name: "LastModifiedDate", + table: "VideoActor"); + } + } +} diff --git a/CleanArchitecture/CleanArchitecture.Data/Migrations/ApplicationDbContextModelSnapshot.cs b/CleanArchitecture/CleanArchitecture.Data/Migrations/ApplicationDbContextModelSnapshot.cs index 644f739..9a1baf8 100644 --- a/CleanArchitecture/CleanArchitecture.Data/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/CleanArchitecture/CleanArchitecture.Data/Migrations/ApplicationDbContextModelSnapshot.cs @@ -154,6 +154,21 @@ namespace CleanArchitecture.Data.Migrations b.Property("ActorId") .HasColumnType("int"); + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("LastModifiedBy") + .HasColumnType("longtext"); + + b.Property("LastModifiedDate") + .HasColumnType("datetime(6)"); + b.HasKey("VideoId", "ActorId"); b.HasIndex("ActorId");