< Summary

Information
Class: CoWorkingApp.API.Infrastructure.Context.CoWorkingContext
Assembly: CoWorkingApp.API
File(s): H:\Vicentico\Proyectos\CoWorkingApp Project\CoWorkingApp\CoWorkingApp.API\Infrastructure\Context\CoWorkingContext.cs
Line coverage
100%
Covered lines: 58
Uncovered lines: 0
Coverable lines: 58
Total lines: 110
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
.ctor(...)100%1100%
get_Users()100%1100%
get_Seats()100%1100%
get_Reservations()100%1100%
OnModelCreating(...)100%1100%
ModelCreateUser(...)100%1100%
ModelCreateReservation(...)100%1100%
ModelCreateSeat(...)100%1100%

File(s)

H:\Vicentico\Proyectos\CoWorkingApp Project\CoWorkingApp\CoWorkingApp.API\Infrastructure\Context\CoWorkingContext.cs

#LineLine coverage
 1using CoWorkingApp.Core.Domain.Entities;
 2using Microsoft.EntityFrameworkCore;
 3
 4namespace CoWorkingApp.API.Infrastructure.Context
 5{
 6    /// <summary>
 7    /// Clase que representa el contexto de la base de datos para la aplicación CoWorking.
 8    /// </summary>
 9    public class CoWorkingContext : DbContext
 10    {
 11        /// <summary>
 12        /// Constructor que recibe las opciones de configuración del contexto.
 13        /// </summary>
 14        /// <param name="options">Opciones de configuración del contexto.</param>
 23115        public CoWorkingContext(DbContextOptions<CoWorkingContext> options) : base(options) { }
 16
 17        /// <summary>
 18        /// DbSet que representa la tabla de usuarios en la base de datos.
 19        /// </summary>
 13220        public DbSet<User> Users { get; set; }
 21
 22        /// <summary>
 23        /// DbSet que representa la tabla de asientos en la base de datos.
 24        /// </summary>
 13125        public DbSet<Seat> Seats { get; set; }
 26
 27        /// <summary>
 28        /// DbSet que representa la tabla de reservas en la base de datos.
 29        /// </summary>
 13030        public DbSet<Reservation> Reservations { get; set; }
 31
 32        /// <summary>
 33        /// Método que se llama al crear el modelo de la base de datos y define las configuraciones adicionales.
 34        /// </summary>
 35        /// <param name="modelBuilder">Constructor del modelo de la base de datos.</param>
 36        protected override void OnModelCreating(ModelBuilder modelBuilder)
 237        {
 238            ModelCreateUser(modelBuilder);
 239            ModelCreateSeat(modelBuilder);
 240            ModelCreateReservation(modelBuilder);
 241        }
 42
 43        /// <summary>
 44        /// Configuración del modelo de la entidad User a través de Fluent API.
 45        /// </summary>
 46        /// <param name="modelBuilder">Constructor del modelo de la base de datos.</param>
 47        private void ModelCreateUser(ModelBuilder modelBuilder)
 248        {
 249            modelBuilder.Entity<User>(user =>
 250            {
 251                user.ToTable("Users");
 252                user.HasKey(u => u.Id);
 253                user.Property(u => u.Name).IsRequired().HasMaxLength(50);
 254                user.Property(u => u.LastName).IsRequired().HasMaxLength(50);
 255                user.Property(u => u.Email).IsRequired().HasMaxLength(100);
 256                user.Property(u => u.Password).IsRequired().HasMaxLength(50);
 257                user.HasIndex(u => u.Email).IsUnique();
 258
 259                // Ignorar la colección Reservations en la entidad User
 260                user.Ignore(u => u.Reservations);
 461            });
 262        }
 63
 64        /// <summary>
 65        /// Configuración del modelo de la entidad Reservation a través de Fluent API.
 66        /// </summary>
 67        /// <param name="modelBuilder">Constructor del modelo de la base de datos.</param>
 68        private void ModelCreateReservation(ModelBuilder modelBuilder)
 269        {
 270            modelBuilder.Entity<Reservation>(reservation =>
 271            {
 272                reservation.ToTable("Reservations");
 273                reservation.HasKey(r => r.Id);
 274                reservation.Property(r => r.Date).IsRequired();
 275
 276                // Relación con User
 277                reservation.HasOne(r => r.User)
 278                    .WithMany(u => u.Reservations)
 279                    .HasForeignKey(r => r.UserId)
 280                    .OnDelete(DeleteBehavior.Cascade);
 281
 282                // Relación con Seat
 283                reservation.HasOne(r => r.Seat)
 284                    .WithMany(s => s.Reservations)
 285                    .HasForeignKey(r => r.SeatId)
 286                    .OnDelete(DeleteBehavior.Cascade);
 487            });
 288        }
 89
 90        /// <summary>
 91        /// Configuración del modelo de la entidad Seat a través de Fluent API.
 92        /// </summary>
 93        /// <param name="modelBuilder">Constructor del modelo de la base de datos.</param>
 94        private void ModelCreateSeat(ModelBuilder modelBuilder)
 295        {
 296            modelBuilder.Entity<Seat>(seat =>
 297            {
 298                seat.ToTable("Seats");
 299                seat.HasKey(s => s.Id);
 2100                seat.Property(s => s.Name).IsRequired().HasMaxLength(50);
 2101                seat.Property(s => s.IsBlocked).IsRequired();
 2102                seat.Property(s => s.Description).HasMaxLength(255);
 2103                seat.HasIndex(s => s.Name).IsUnique();
 2104
 2105                // Ignorar la colección Reservations en la entidad Seat
 2106                seat.Ignore(s => s.Reservations);
 4107            });
 2108        }
 109    }
 110}