Files
spacerace/Server/Repositories/SpaceRaceDbContext.cs
T
2023-08-29 11:45:08 +10:00

58 lines
1.7 KiB
C#

using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
namespace Server;
public class SpaceRaceDbContext : DbContext {
public DbSet<Lap> Laps { get; set; }
public SpaceRaceDbContext(DbContextOptions<SpaceRaceDbContext> 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<Lap>().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",
}
);
}
}