mirror of
https://github.com/AJMicke/KickerELO.git
synced 2026-03-11 13:31:02 +01:00
Add 2vs2 stats to API
This commit is contained in:
@@ -0,0 +1,44 @@
|
|||||||
|
package org.kickerelo.kickerelo.api;
|
||||||
|
|
||||||
|
import org.kickerelo.kickerelo.data.Spieler;
|
||||||
|
import org.kickerelo.kickerelo.repository.Ergebnis2vs2Repository;
|
||||||
|
import org.kickerelo.kickerelo.repository.SpielerRepository;
|
||||||
|
import org.kickerelo.kickerelo.service.Stat2vs2Service;
|
||||||
|
import org.kickerelo.kickerelo.util.Position;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/stats/2vs2")
|
||||||
|
public class Stat2vs2Controller {
|
||||||
|
private final Stat2vs2Service service;
|
||||||
|
private final SpielerRepository spielerRepository;
|
||||||
|
private final Ergebnis2vs2Repository ergebnis2vs2Repository;
|
||||||
|
|
||||||
|
public Stat2vs2Controller(Stat2vs2Service service, SpielerRepository spielerRepository, Ergebnis2vs2Repository ergebnis2vs2Repository) {
|
||||||
|
this.service = service;
|
||||||
|
this.spielerRepository = spielerRepository;
|
||||||
|
this.ergebnis2vs2Repository = ergebnis2vs2Repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/{playerId}")
|
||||||
|
public ResponseEntity<Stat2vs2DTO> get2vs2StatsForPlayer(@PathVariable long playerId) {
|
||||||
|
Spieler s = spielerRepository.findById(playerId).orElse(null);
|
||||||
|
if (s == null) return ResponseEntity.noContent().build();
|
||||||
|
|
||||||
|
return ResponseEntity.ok(new Stat2vs2DTO(
|
||||||
|
s.getElo2vs2(),
|
||||||
|
ergebnis2vs2Repository.countByGewinnerVornOrGewinnerHintenOrVerliererVornOrVerliererHinten(s, s, s, s),
|
||||||
|
service.getWinrate(s, Position.BOTH),
|
||||||
|
service.getFrontRate(s),
|
||||||
|
service.getWinrate(s, Position.FRONT),
|
||||||
|
service.getWinrate(s, Position.BACK),
|
||||||
|
ergebnis2vs2Repository.avgGoalDiffBack(s),
|
||||||
|
ergebnis2vs2Repository.avgGoalDiffFront(s),
|
||||||
|
service.getStreak(s)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
14
src/main/java/org/kickerelo/kickerelo/api/Stat2vs2DTO.java
Normal file
14
src/main/java/org/kickerelo/kickerelo/api/Stat2vs2DTO.java
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
package org.kickerelo.kickerelo.api;
|
||||||
|
|
||||||
|
public record Stat2vs2DTO(
|
||||||
|
Float elo,
|
||||||
|
int numGames,
|
||||||
|
Float winRate,
|
||||||
|
Float frontPercentile,
|
||||||
|
Float frontWinRate,
|
||||||
|
Float backWinRate,
|
||||||
|
Float goalDiffBack,
|
||||||
|
Float goalDiffFront,
|
||||||
|
int currentStreak
|
||||||
|
) {
|
||||||
|
}
|
||||||
@@ -15,6 +15,8 @@ public interface Ergebnis2vs2Repository extends JpaRepository<Ergebnis2vs2, Long
|
|||||||
int countByGewinnerVorn(Spieler gewinnerVon);
|
int countByGewinnerVorn(Spieler gewinnerVon);
|
||||||
int countByVerliererHinten(Spieler verliererHinten);
|
int countByVerliererHinten(Spieler verliererHinten);
|
||||||
int countByVerliererVorn(Spieler verlierVon);
|
int countByVerliererVorn(Spieler verlierVon);
|
||||||
|
int countByGewinnerVornOrGewinnerHinten(Spieler gewinnerVon, Spieler gewinnerHinten);
|
||||||
|
int countByVerliererVornOrVerliererHinten(Spieler verliererVon, Spieler verliererHinten);
|
||||||
|
|
||||||
int countByGewinnerVornOrGewinnerHintenOrVerliererVornOrVerliererHinten(Spieler gewinnerVon, Spieler gewinnerHinten,
|
int countByGewinnerVornOrGewinnerHintenOrVerliererVornOrVerliererHinten(Spieler gewinnerVon, Spieler gewinnerHinten,
|
||||||
Spieler verliererVon, Spieler verliererHinten);
|
Spieler verliererVon, Spieler verliererHinten);
|
||||||
|
|||||||
@@ -30,6 +30,10 @@ public class Stat2vs2Service {
|
|||||||
wins = ergebnis2vs2Repository.countByGewinnerVorn(s);
|
wins = ergebnis2vs2Repository.countByGewinnerVorn(s);
|
||||||
losses = ergebnis2vs2Repository.countByVerliererVorn(s);
|
losses = ergebnis2vs2Repository.countByVerliererVorn(s);
|
||||||
break;
|
break;
|
||||||
|
case BOTH:
|
||||||
|
wins = ergebnis2vs2Repository.countByGewinnerVornOrGewinnerHinten(s, s);
|
||||||
|
losses = ergebnis2vs2Repository.countByVerliererVornOrVerliererHinten(s, s);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
wins = 0;
|
wins = 0;
|
||||||
losses = 0;
|
losses = 0;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
package org.kickerelo.kickerelo.util;
|
package org.kickerelo.kickerelo.util;
|
||||||
|
|
||||||
public enum Position {
|
public enum Position {
|
||||||
FRONT, BACK
|
FRONT, BACK, BOTH
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user