using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; namespace Server; public class SpaceRaceDbContext : DbContext { public DbSet Laps { get; set; } public SpaceRaceDbContext(DbContextOptions options) : base(options) {} protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); new SpaceRaceInitialiser(modelBuilder).Seed(); } } [Index(nameof(UserId), nameof(Map), IsUnique = true)] [Index(nameof(Map))] public class Lap { public DateTimeOffset Created { get; set; } public Guid Id { get; set; } public Guid UserId { get; set; } public double Time { get; set; } [Required] public string Map { get; set; } } class SpaceRaceInitialiser { private readonly ModelBuilder modelBuilder; public SpaceRaceInitialiser(ModelBuilder modelBuilder) { this.modelBuilder = modelBuilder; } public void Seed() { modelBuilder.Entity().HasData( new Lap { Created = DateTimeOffset.UtcNow, Id = Guid.NewGuid(), UserId = Guid.NewGuid(), Time = 128f, Map = "sr_TestTrack", }, new Lap { Created = DateTimeOffset.UtcNow, Id = Guid.NewGuid(), UserId = Guid.NewGuid(), Time = 132f, Map = "sr_TestTrack", }, new Lap { Created = DateTimeOffset.UtcNow, Id = Guid.NewGuid(), UserId = Guid.NewGuid(), Time = 148f, Map = "sr_TestTrack", } ); } }