pure sql baybeee
This commit is contained in:
1 parent
b7ad479ead
commit
5a7e493d92
12 files changed
+173
-39
No files matched your search
@@ -1,6 +1,8 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
using Server.Services;
|
||||
using SpaceRace.Shared;
|
||||
|
||||
namespace Server.Controllers;
|
||||
@@ -10,10 +12,16 @@ namespace Server.Controllers;
|
||||
public class LapController : ControllerBase {
|
||||
private readonly ILogger<LapController> _logger;
|
||||
private SpaceRaceDbContext _db;
|
||||
private LapTimesService _lapTimes;
|
||||
|
||||
public LapController(ILogger<LapController> logger, SpaceRaceDbContext db) {
|
||||
public LapController(
|
||||
ILogger<LapController> logger,
|
||||
SpaceRaceDbContext db,
|
||||
LapTimesService lapTimes
|
||||
){
|
||||
_logger = logger;
|
||||
_db = db;
|
||||
_lapTimes = lapTimes;
|
||||
}
|
||||
|
||||
[HttpGet()]
|
||||
@@ -28,11 +36,25 @@ public class LapController : ControllerBase {
|
||||
}
|
||||
|
||||
[HttpPost()]
|
||||
public async Task<Lap> Post(LapDTO dto) {
|
||||
public async Task<LapTimesDTO> Post(LapDTO dto) {
|
||||
Lap existing = _db.Laps
|
||||
.SingleOrDefault(l => l.UserId == dto.UserId && l.Map == dto.Map);
|
||||
|
||||
Lap v = new Lap {
|
||||
Lap NotFaster(Lap e) {
|
||||
_logger.LogInformation($"Lap was not a PB.");
|
||||
return e;
|
||||
}
|
||||
|
||||
Lap UpdateValues(Lap e) => new Lap {
|
||||
Id = e.Id,
|
||||
UserId = e.UserId,
|
||||
Map = e.Map,
|
||||
Time = dto.Time,
|
||||
Sectors = dto.Sectors,
|
||||
Created = DateTimeOffset.Now,
|
||||
};
|
||||
|
||||
Lap Create() => new Lap {
|
||||
Id = Guid.NewGuid(),
|
||||
UserId = dto.UserId,
|
||||
Map = dto.Map,
|
||||
@@ -41,8 +63,13 @@ public class LapController : ControllerBase {
|
||||
Created = DateTimeOffset.UtcNow,
|
||||
};
|
||||
|
||||
_db.Laps.Add(v);
|
||||
await _db.SaveChangesAsync();
|
||||
return v;
|
||||
Lap v = existing switch {
|
||||
null => Create(),
|
||||
Lap e when dto.Time < e.Time => UpdateValues(e),
|
||||
_ => NotFaster(existing),
|
||||
};
|
||||
|
||||
await _db.Laps.Upsert(v).RunAsync();
|
||||
return _lapTimes.LapTimes(v.UserId, v.Map);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
using Server.Services;
|
||||
using SpaceRace.Shared;
|
||||
|
||||
namespace Server.Controllers;
|
||||
@@ -10,29 +12,21 @@ namespace Server.Controllers;
|
||||
public class LapTimesController : ControllerBase {
|
||||
private readonly ILogger<LapTimesController> _logger;
|
||||
private SpaceRaceDbContext _db;
|
||||
private LapTimesService _lapTimes;
|
||||
|
||||
public LapTimesController(ILogger<LapTimesController> logger, SpaceRaceDbContext db) {
|
||||
public LapTimesController(
|
||||
ILogger<LapTimesController> logger,
|
||||
SpaceRaceDbContext db,
|
||||
LapTimesService lapTimes
|
||||
){
|
||||
_logger = logger;
|
||||
_db = db;
|
||||
_lapTimes = lapTimes;
|
||||
}
|
||||
|
||||
[HttpGet()]
|
||||
public LapTimesDTO LapTimes(Guid userId, string mapName) {
|
||||
_logger.LogInformation($"{userId} {mapName}");
|
||||
|
||||
PbDTO pb = _db.PbDTO
|
||||
.Where(pb => pb.UserId == userId)
|
||||
.Where(pb => pb.Map == mapName)
|
||||
.SingleOrDefault();
|
||||
|
||||
PbDTO lapRecord = _db.PbDTO
|
||||
.Where(pb => pb.Map == mapName)
|
||||
.OrderBy(pb => pb.Position)
|
||||
.FirstOrDefault();
|
||||
|
||||
return new LapTimesDTO {
|
||||
Pb = pb,
|
||||
LapRecord = lapRecord,
|
||||
};
|
||||
return _lapTimes.LapTimes(userId, mapName);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user