|
|
|
|
@@ -6,15 +6,25 @@ namespace GameIdeas.WebAPI.Context;
|
|
|
|
|
public class GameIdeasContext : DbContext
|
|
|
|
|
{
|
|
|
|
|
private ILoggerFactory LoggerFactory;
|
|
|
|
|
|
|
|
|
|
public GameIdeasContext(DbContextOptions<GameIdeasContext> option, ILoggerFactory loggerFactory)
|
|
|
|
|
: base(option)
|
|
|
|
|
{
|
|
|
|
|
LoggerFactory = loggerFactory;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual DbSet<Game> Games { get; set; } = null!;
|
|
|
|
|
public virtual DbSet<User> Users { get; set; } = null!;
|
|
|
|
|
public virtual DbSet<Developer> Developers { get; set; } = null!;
|
|
|
|
|
public virtual DbSet<Platform> Platforms { get; set; } = null!;
|
|
|
|
|
public virtual DbSet<Property> Properties { get; set; } = null!;
|
|
|
|
|
public virtual DbSet<Publisher> Publishers { get; set; } = null!;
|
|
|
|
|
public virtual DbSet<Tag> Tags { get; set; } = null!;
|
|
|
|
|
public virtual DbSet<Game> Games { get; set; } = null!;
|
|
|
|
|
public virtual DbSet<GameDeveloper> GameDevelopers { get; set; } = null!;
|
|
|
|
|
public virtual DbSet<GamePlatform> GamePlatforms { get; set; } = null!;
|
|
|
|
|
public virtual DbSet<GameProperty> GameProperties { get; set; } = null!;
|
|
|
|
|
public virtual DbSet<GamePublisher> GamePublishers { get; set; } = null!;
|
|
|
|
|
public virtual DbSet<GameTag> GameTags { get; set; } = null!;
|
|
|
|
|
|
|
|
|
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
|
|
|
|
{
|
|
|
|
|
@@ -24,6 +34,135 @@ public class GameIdeasContext : DbContext
|
|
|
|
|
|
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
|
|
|
{
|
|
|
|
|
modelBuilder.Entity<User>(entity => {
|
|
|
|
|
entity.ToTable("User");
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.Id)
|
|
|
|
|
.UseIdentityByDefaultColumn()
|
|
|
|
|
.HasIdentityOptions(startValue: 100000);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<Developer>(entity => entity.ToTable("Developer"));
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<Platform>(entity => entity.ToTable("Platform"));
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<Property>(entity => entity.ToTable("Property"));
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<Publisher>(entity => entity.ToTable("Publisher"));
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<Tag>(entity => entity.ToTable("Tag"));
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<Game>(entity =>
|
|
|
|
|
{
|
|
|
|
|
entity.ToTable("Game");
|
|
|
|
|
|
|
|
|
|
entity.HasIndex(e => e.CreationUserId);
|
|
|
|
|
|
|
|
|
|
entity.HasIndex(e => e.ModificationUserId);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.CreationDate)
|
|
|
|
|
.HasDefaultValueSql("now()");
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.Id)
|
|
|
|
|
.UseIdentityByDefaultColumn()
|
|
|
|
|
.HasIdentityOptions(startValue: 100000);
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.CreationUser)
|
|
|
|
|
.WithMany(p => p.CreationGames)
|
|
|
|
|
.HasForeignKey(d => d.CreationUserId)
|
|
|
|
|
.OnDelete(DeleteBehavior.ClientSetNull);
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.ModificationUser)
|
|
|
|
|
.WithMany(p => p.ModificationGames)
|
|
|
|
|
.HasForeignKey(d => d.ModificationUserId)
|
|
|
|
|
.OnDelete(DeleteBehavior.ClientSetNull);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<GameDeveloper>(entity =>
|
|
|
|
|
{
|
|
|
|
|
entity.ToTable("GameDeveloper");
|
|
|
|
|
|
|
|
|
|
entity.HasKey(e => new { e.GameId, e.DeveloperId });
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.Game)
|
|
|
|
|
.WithMany(p => p.GameDevelopers)
|
|
|
|
|
.HasForeignKey(d => d.GameId)
|
|
|
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.Developer)
|
|
|
|
|
.WithMany(p => p.GameDevelopers)
|
|
|
|
|
.HasForeignKey(d => d.DeveloperId)
|
|
|
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<GamePlatform>(entity =>
|
|
|
|
|
{
|
|
|
|
|
entity.ToTable("GamePlatform");
|
|
|
|
|
|
|
|
|
|
entity.HasKey(e => new { e.GameId, e.PlatformId });
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.Game)
|
|
|
|
|
.WithMany(p => p.GamePlatforms)
|
|
|
|
|
.HasForeignKey(d => d.GameId)
|
|
|
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.Platform)
|
|
|
|
|
.WithMany(p => p.GamePlatforms)
|
|
|
|
|
.HasForeignKey(d => d.PlatformId)
|
|
|
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<GameProperty>(entity =>
|
|
|
|
|
{
|
|
|
|
|
entity.ToTable("GameProperty");
|
|
|
|
|
|
|
|
|
|
entity.HasKey(e => new { e.GameId, e.PropertyId });
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.Game)
|
|
|
|
|
.WithMany(p => p.GameProperties)
|
|
|
|
|
.HasForeignKey(d => d.GameId)
|
|
|
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.Property)
|
|
|
|
|
.WithMany(p => p.GameProperties)
|
|
|
|
|
.HasForeignKey(d => d.PropertyId)
|
|
|
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<GamePublisher>(entity =>
|
|
|
|
|
{
|
|
|
|
|
entity.ToTable("GamePublisher");
|
|
|
|
|
|
|
|
|
|
entity.HasKey(e => new { e.GameId, e.PublisherId });
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.Game)
|
|
|
|
|
.WithMany(p => p.GamePublishers)
|
|
|
|
|
.HasForeignKey(d => d.GameId)
|
|
|
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.Publisher)
|
|
|
|
|
.WithMany(p => p.GamePublishers)
|
|
|
|
|
.HasForeignKey(d => d.PublisherId)
|
|
|
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<GameTag>(entity =>
|
|
|
|
|
{
|
|
|
|
|
entity.ToTable("GameTag");
|
|
|
|
|
|
|
|
|
|
entity.HasKey(e => new { e.GameId, e.TagId });
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.Game)
|
|
|
|
|
.WithMany(p => p.GameTags)
|
|
|
|
|
.HasForeignKey(d => d.GameId)
|
|
|
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.Tag)
|
|
|
|
|
.WithMany(p => p.GameTags)
|
|
|
|
|
.HasForeignKey(d => d.TagId)
|
|
|
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
base.OnModelCreating(modelBuilder);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|