namespace Francesco.Recipes.World.Data { using Francesco.Recipes.World.Models.BackendModels.Category; using Francesco.Recipes.World.Models.BackendModels.Ingredient; using Francesco.Recipes.World.Models.BackendModels.Instruction; using Francesco.Recipes.World.Models.BackendModels.Recipe; using Francesco.Recipes.World.Models.BackendModels.RecipeIngredient; using Francesco.Recipes.World.Models.BackendModels; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; public class FrancescosRecipesWorldDbContext : IdentityDbContext { public FrancescosRecipesWorldDbContext(DbContextOptions options) : base(options) { } public DbSet Categories => Set(); public DbSet Ingredients => Set(); public DbSet Instructions => Set(); public DbSet Recipes => Set(); public DbSet RecipeIngredients => Set(); public override Task SaveChangesAsync(CancellationToken cancellationToken = default) { foreach (var entry in ChangeTracker.Entries()) { if (entry.Entity is ITimeStampedEntity timeStampedEntity) { switch (entry.State) { case EntityState.Added: timeStampedEntity.CreatedAt = DateTime.UtcNow; break; case EntityState.Modified: timeStampedEntity.ModifiedAt = DateTime.UtcNow; break; } } } return base.SaveChangesAsync(cancellationToken); } } }