diff --git a/Server/Migrations/20230829062456_Beginninging.cs b/Server/Migrations/20230829062456_Beginninging.cs
deleted file mode 100644
index ca2e502..0000000
--- a/Server/Migrations/20230829062456_Beginninging.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
-
-namespace Server.Migrations
-{
- ///
- public partial class Beginninging : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.CreateTable(
- name: "Laps",
- columns: table => new
- {
- Id = table.Column(type: "uuid", nullable: false),
- Created = table.Column(type: "timestamp with time zone", nullable: false),
- UserId = table.Column(type: "uuid", nullable: false),
- Time = table.Column(type: "double precision", nullable: false),
- Map = table.Column(type: "text", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_Laps", x => x.Id);
- });
-
- migrationBuilder.CreateTable(
- name: "PbDTO",
- columns: table => new
- {
- Id = table.Column(type: "uuid", nullable: false),
- UserId = table.Column(type: "uuid", nullable: false),
- Created = table.Column(type: "timestamp with time zone", nullable: false),
- Time = table.Column(type: "double precision", nullable: false),
- Map = table.Column(type: "text", nullable: true),
- Completions = table.Column(type: "integer", nullable: false),
- Position = table.Column(type: "integer", nullable: false)
- },
- constraints: table =>
- {
- });
-
- migrationBuilder.InsertData(
- table: "Laps",
- columns: new[] { "Id", "Created", "Map", "Time", "UserId" },
- values: new object[,]
- {
- { new Guid("42ee5177-d287-4ea1-91ed-ddd1d596e81f"), new DateTimeOffset(new DateTime(2023, 8, 29, 6, 24, 56, 272, DateTimeKind.Unspecified).AddTicks(1375), new TimeSpan(0, 0, 0, 0, 0)), "sr_TestTrack", 128.0, new Guid("11111111-1111-1111-1111-111111111111") },
- { new Guid("69002b76-54e2-455f-99aa-2fdb7f11c130"), new DateTimeOffset(new DateTime(2023, 8, 29, 6, 24, 56, 272, DateTimeKind.Unspecified).AddTicks(1471), new TimeSpan(0, 0, 0, 0, 0)), "sr_TestTrack", 148.0, new Guid("33333333-3333-3333-3333-333333333333") },
- { new Guid("81eb5dcb-1dd4-483b-993e-e73e1b95c5ff"), new DateTimeOffset(new DateTime(2023, 8, 29, 6, 24, 56, 272, DateTimeKind.Unspecified).AddTicks(1459), new TimeSpan(0, 0, 0, 0, 0)), "sr_TestTrack", 132.0, new Guid("22222222-2222-2222-2222-222222222222") }
- });
-
- migrationBuilder.CreateIndex(
- name: "IX_Laps_Map",
- table: "Laps",
- column: "Map");
-
- migrationBuilder.CreateIndex(
- name: "IX_Laps_UserId_Map",
- table: "Laps",
- columns: new[] { "UserId", "Map" },
- unique: true);
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.DropTable(
- name: "Laps");
-
- migrationBuilder.DropTable(
- name: "PbDTO");
- }
- }
-}
diff --git a/Server/Migrations/20230829062456_Beginninging.Designer.cs b/Server/Migrations/20230829101729_InitSectors.Designer.cs
similarity index 75%
rename from Server/Migrations/20230829062456_Beginninging.Designer.cs
rename to Server/Migrations/20230829101729_InitSectors.Designer.cs
index dc1aaac..337bbca 100644
--- a/Server/Migrations/20230829062456_Beginninging.Designer.cs
+++ b/Server/Migrations/20230829101729_InitSectors.Designer.cs
@@ -1,5 +1,6 @@
//
using System;
+using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
@@ -12,8 +13,8 @@ using Server;
namespace Server.Migrations
{
[DbContext(typeof(SpaceRaceDbContext))]
- [Migration("20230829062456_Beginninging")]
- partial class Beginninging
+ [Migration("20230829101729_InitSectors")]
+ partial class InitSectors
{
///
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@@ -38,6 +39,10 @@ namespace Server.Migrations
.IsRequired()
.HasColumnType("text");
+ b.Property>("Sectors")
+ .IsRequired()
+ .HasColumnType("double precision[]");
+
b.Property("Time")
.HasColumnType("double precision");
@@ -56,25 +61,28 @@ namespace Server.Migrations
b.HasData(
new
{
- Id = new Guid("42ee5177-d287-4ea1-91ed-ddd1d596e81f"),
- Created = new DateTimeOffset(new DateTime(2023, 8, 29, 6, 24, 56, 272, DateTimeKind.Unspecified).AddTicks(1375), new TimeSpan(0, 0, 0, 0, 0)),
+ Id = new Guid("589bfb11-59c1-4f7e-beef-973c301b8e08"),
+ Created = new DateTimeOffset(new DateTime(2023, 8, 29, 10, 17, 29, 656, DateTimeKind.Unspecified).AddTicks(467), new TimeSpan(0, 0, 0, 0, 0)),
Map = "sr_TestTrack",
+ Sectors = new List { 64.0, 24.0, 24.0 },
Time = 128.0,
UserId = new Guid("11111111-1111-1111-1111-111111111111")
},
new
{
- Id = new Guid("81eb5dcb-1dd4-483b-993e-e73e1b95c5ff"),
- Created = new DateTimeOffset(new DateTime(2023, 8, 29, 6, 24, 56, 272, DateTimeKind.Unspecified).AddTicks(1459), new TimeSpan(0, 0, 0, 0, 0)),
+ Id = new Guid("67bda0f2-ecf8-4521-ba21-08d252d9ce59"),
+ Created = new DateTimeOffset(new DateTime(2023, 8, 29, 10, 17, 29, 656, DateTimeKind.Unspecified).AddTicks(723), new TimeSpan(0, 0, 0, 0, 0)),
Map = "sr_TestTrack",
+ Sectors = new List { 64.0, 38.0, 24.0 },
Time = 132.0,
UserId = new Guid("22222222-2222-2222-2222-222222222222")
},
new
{
- Id = new Guid("69002b76-54e2-455f-99aa-2fdb7f11c130"),
- Created = new DateTimeOffset(new DateTime(2023, 8, 29, 6, 24, 56, 272, DateTimeKind.Unspecified).AddTicks(1471), new TimeSpan(0, 0, 0, 0, 0)),
+ Id = new Guid("678183de-9df4-4d98-9807-f288b54a7f3a"),
+ Created = new DateTimeOffset(new DateTime(2023, 8, 29, 10, 17, 29, 656, DateTimeKind.Unspecified).AddTicks(745), new TimeSpan(0, 0, 0, 0, 0)),
Map = "sr_TestTrack",
+ Sectors = new List { 64.0, 64.0, 24.0 },
Time = 148.0,
UserId = new Guid("33333333-3333-3333-3333-333333333333")
});
@@ -97,13 +105,16 @@ namespace Server.Migrations
b.Property("Position")
.HasColumnType("integer");
+ b.Property>("Sectors")
+ .HasColumnType("double precision[]");
+
b.Property("Time")
.HasColumnType("double precision");
b.Property("UserId")
.HasColumnType("uuid");
- b.ToTable("PbDTO");
+ b.ToTable((string)null);
b.ToSqlQuery("WITH ranked AS (\n SELECT *, rank() OVER (ORDER BY \"Time\" ASC) AS \"Position\", COUNT(\"Id\") OVER () AS \"Completions\"\n FROM \"Laps\"\n)\n\nSELECT * FROM ranked");
});
diff --git a/Server/Migrations/20230829101729_InitSectors.cs b/Server/Migrations/20230829101729_InitSectors.cs
new file mode 100644
index 0000000..4cbd042
--- /dev/null
+++ b/Server/Migrations/20230829101729_InitSectors.cs
@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
+
+namespace Server.Migrations
+{
+ ///
+ public partial class InitSectors : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "Laps",
+ columns: table => new
+ {
+ Id = table.Column(type: "uuid", nullable: false),
+ UserId = table.Column(type: "uuid", nullable: false),
+ Created = table.Column(type: "timestamp with time zone", nullable: false),
+ Time = table.Column(type: "double precision", nullable: false),
+ Sectors = table.Column>(type: "double precision[]", nullable: false),
+ Map = table.Column(type: "text", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Laps", x => x.Id);
+ });
+
+ migrationBuilder.InsertData(
+ table: "Laps",
+ columns: new[] { "Id", "Created", "Map", "Sectors", "Time", "UserId" },
+ values: new object[,]
+ {
+ { new Guid("589bfb11-59c1-4f7e-beef-973c301b8e08"), new DateTimeOffset(new DateTime(2023, 8, 29, 10, 17, 29, 656, DateTimeKind.Unspecified).AddTicks(467), new TimeSpan(0, 0, 0, 0, 0)), "sr_TestTrack", new List { 64.0, 24.0, 24.0 }, 128.0, new Guid("11111111-1111-1111-1111-111111111111") },
+ { new Guid("678183de-9df4-4d98-9807-f288b54a7f3a"), new DateTimeOffset(new DateTime(2023, 8, 29, 10, 17, 29, 656, DateTimeKind.Unspecified).AddTicks(745), new TimeSpan(0, 0, 0, 0, 0)), "sr_TestTrack", new List { 64.0, 64.0, 24.0 }, 148.0, new Guid("33333333-3333-3333-3333-333333333333") },
+ { new Guid("67bda0f2-ecf8-4521-ba21-08d252d9ce59"), new DateTimeOffset(new DateTime(2023, 8, 29, 10, 17, 29, 656, DateTimeKind.Unspecified).AddTicks(723), new TimeSpan(0, 0, 0, 0, 0)), "sr_TestTrack", new List { 64.0, 38.0, 24.0 }, 132.0, new Guid("22222222-2222-2222-2222-222222222222") }
+ });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Laps_Map",
+ table: "Laps",
+ column: "Map");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Laps_UserId_Map",
+ table: "Laps",
+ columns: new[] { "UserId", "Map" },
+ unique: true);
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "Laps");
+ }
+ }
+}
diff --git a/Server/Migrations/SpaceRaceDbContextModelSnapshot.cs b/Server/Migrations/SpaceRaceDbContextModelSnapshot.cs
index d6b723a..ca2d311 100644
--- a/Server/Migrations/SpaceRaceDbContextModelSnapshot.cs
+++ b/Server/Migrations/SpaceRaceDbContextModelSnapshot.cs
@@ -1,5 +1,6 @@
//
using System;
+using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
@@ -35,6 +36,10 @@ namespace Server.Migrations
.IsRequired()
.HasColumnType("text");
+ b.Property>("Sectors")
+ .IsRequired()
+ .HasColumnType("double precision[]");
+
b.Property("Time")
.HasColumnType("double precision");
@@ -53,25 +58,28 @@ namespace Server.Migrations
b.HasData(
new
{
- Id = new Guid("42ee5177-d287-4ea1-91ed-ddd1d596e81f"),
- Created = new DateTimeOffset(new DateTime(2023, 8, 29, 6, 24, 56, 272, DateTimeKind.Unspecified).AddTicks(1375), new TimeSpan(0, 0, 0, 0, 0)),
+ Id = new Guid("589bfb11-59c1-4f7e-beef-973c301b8e08"),
+ Created = new DateTimeOffset(new DateTime(2023, 8, 29, 10, 17, 29, 656, DateTimeKind.Unspecified).AddTicks(467), new TimeSpan(0, 0, 0, 0, 0)),
Map = "sr_TestTrack",
+ Sectors = new List { 64.0, 24.0, 24.0 },
Time = 128.0,
UserId = new Guid("11111111-1111-1111-1111-111111111111")
},
new
{
- Id = new Guid("81eb5dcb-1dd4-483b-993e-e73e1b95c5ff"),
- Created = new DateTimeOffset(new DateTime(2023, 8, 29, 6, 24, 56, 272, DateTimeKind.Unspecified).AddTicks(1459), new TimeSpan(0, 0, 0, 0, 0)),
+ Id = new Guid("67bda0f2-ecf8-4521-ba21-08d252d9ce59"),
+ Created = new DateTimeOffset(new DateTime(2023, 8, 29, 10, 17, 29, 656, DateTimeKind.Unspecified).AddTicks(723), new TimeSpan(0, 0, 0, 0, 0)),
Map = "sr_TestTrack",
+ Sectors = new List { 64.0, 38.0, 24.0 },
Time = 132.0,
UserId = new Guid("22222222-2222-2222-2222-222222222222")
},
new
{
- Id = new Guid("69002b76-54e2-455f-99aa-2fdb7f11c130"),
- Created = new DateTimeOffset(new DateTime(2023, 8, 29, 6, 24, 56, 272, DateTimeKind.Unspecified).AddTicks(1471), new TimeSpan(0, 0, 0, 0, 0)),
+ Id = new Guid("678183de-9df4-4d98-9807-f288b54a7f3a"),
+ Created = new DateTimeOffset(new DateTime(2023, 8, 29, 10, 17, 29, 656, DateTimeKind.Unspecified).AddTicks(745), new TimeSpan(0, 0, 0, 0, 0)),
Map = "sr_TestTrack",
+ Sectors = new List { 64.0, 64.0, 24.0 },
Time = 148.0,
UserId = new Guid("33333333-3333-3333-3333-333333333333")
});
@@ -94,13 +102,16 @@ namespace Server.Migrations
b.Property("Position")
.HasColumnType("integer");
+ b.Property>("Sectors")
+ .HasColumnType("double precision[]");
+
b.Property("Time")
.HasColumnType("double precision");
b.Property("UserId")
.HasColumnType("uuid");
- b.ToTable("PbDTO");
+ b.ToTable((string)null);
b.ToSqlQuery("WITH ranked AS (\n SELECT *, rank() OVER (ORDER BY \"Time\" ASC) AS \"Position\", COUNT(\"Id\") OVER () AS \"Completions\"\n FROM \"Laps\"\n)\n\nSELECT * FROM ranked");
});
diff --git a/Server/Models/SpaceRaceShared.cs b/Server/Models/SpaceRaceShared.cs
index 66f4be6..b8fe253 100644
--- a/Server/Models/SpaceRaceShared.cs
+++ b/Server/Models/SpaceRaceShared.cs
@@ -7,15 +7,17 @@ namespace SpaceRace.Shared {
public Guid UserId { get; set; }
public string Map { get; set; }
public double Time { get; set; }
+ public List Sectors { get; set; }
}
public class PbDTO {
- public Guid Id { get; set; }
- public Guid UserId { get; set; }
- public DateTimeOffset Created { get; set; }
- public double Time { get; set; }
- public string Map { get; set; }
- public int Completions { get; set; }
- public int Position { get; set; }
+ public Guid Id { get; set; }
+ public Guid UserId { get; set; }
+ public DateTimeOffset Created { get; set; }
+ public double Time { get; set; }
+ public List Sectors { get; set; }
+ public string Map { get; set; }
+ public int Completions { get; set; }
+ public int Position { get; set; }
}
}
diff --git a/Server/Repositories/SpaceRaceDbContext.cs b/Server/Repositories/SpaceRaceDbContext.cs
index 450fdef..9660c59 100644
--- a/Server/Repositories/SpaceRaceDbContext.cs
+++ b/Server/Repositories/SpaceRaceDbContext.cs
@@ -15,29 +15,31 @@ public class SpaceRaceDbContext : DbContext {
base.OnModelCreating(modelBuilder);
new SpaceRaceInitialiser(modelBuilder).Seed();
- modelBuilder.Entity(pb => {
- var pbQuery = $$"""
- WITH ranked AS (
- SELECT *, rank() OVER (ORDER BY "Time" ASC) AS "Position", COUNT("Id") OVER () AS "Completions"
- FROM "Laps"
- )
+ var pbQuery = $$"""
+ WITH ranked AS (
+ SELECT *, rank() OVER (ORDER BY "Time" ASC) AS "Position", COUNT("Id") OVER () AS "Completions"
+ FROM "Laps"
+ )
- SELECT * FROM ranked
- """;
- pb.HasNoKey();
- pb.ToSqlQuery(pbQuery);
- });
+ SELECT * FROM ranked
+ """;
+
+ modelBuilder.Entity()
+ .HasNoKey()
+ .ToSqlQuery(pbQuery)
+ .ToTable(null as string);
}
}
[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; }
+ public Guid Id { get; set; }
+ public Guid UserId { get; set; }
+ [Required] public DateTimeOffset Created { get; set; }
+ [Required] public double Time { get; set; }
+ [Required] public List Sectors { get; set; }
+ [Required] public string Map { get; set; }
}
class SpaceRaceInitialiser {
@@ -54,6 +56,7 @@ class SpaceRaceInitialiser {
Id = Guid.NewGuid(),
UserId = new Guid("11111111-1111-1111-1111-111111111111"),
Time = 128f,
+ Sectors = new List { 64f, 24f, 24f },
Map = "sr_TestTrack",
},
new Lap {
@@ -61,6 +64,7 @@ class SpaceRaceInitialiser {
Id = Guid.NewGuid(),
UserId = new Guid("22222222-2222-2222-2222-222222222222"),
Time = 132f,
+ Sectors = new List { 64f, 38f, 24f },
Map = "sr_TestTrack",
},
new Lap {
@@ -68,6 +72,7 @@ class SpaceRaceInitialiser {
Id = Guid.NewGuid(),
UserId = new Guid("33333333-3333-3333-3333-333333333333"),
Time = 148f,
+ Sectors = new List { 64f, 64f, 24f },
Map = "sr_TestTrack",
}
);
diff --git a/docker-compose.yaml b/docker-compose.yaml
index c7ff806..2704c5d 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -4,17 +4,17 @@ services:
file: common.yaml
service: pg
- server:
- image: mcr.microsoft.com/dotnet/sdk:7.0
- depends_on:
- - 'pg'
- ports:
- - '40080:80'
- environment:
- CONNECTIONSTRINGS__SPACERACE: "Server=pg;Port=5432;Database=${POSTGRES_DB};User Id=${POSTGRES_USER};Password=${POSTGRES_PASSWORD}"
- DOTNET_WATCH_RESTART_ON_RUDE_EDIT: 1
- command: dotnet watch
- working_dir: "/Server"
- volumes:
- - "./Server:/Server"
+ # server:
+ # image: mcr.microsoft.com/dotnet/sdk:7.0
+ # depends_on:
+ # - 'pg'
+ # ports:
+ # - '40080:80'
+ # environment:
+ # CONNECTIONSTRINGS__SPACERACE: "Server=pg;Port=5432;Database=${POSTGRES_DB};User Id=${POSTGRES_USER};Password=${POSTGRES_PASSWORD}"
+ # DOTNET_WATCH_RESTART_ON_RUDE_EDIT: 1
+ # command: dotnet watch
+ # working_dir: "/Server"
+ # volumes:
+ # - "./Server:/Server"