58 lines
1.7 KiB
C#
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",
|
|
}
|
|
);
|
|
}
|
|
} |