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");