Update Framework with dependencies injector
This commit is contained in:
parent
6550cf03f1
commit
ee9739f5d3
15 changed files with 89 additions and 52 deletions
Binary file not shown.
|
@ -51,6 +51,7 @@ import dev.peerat.backend.routes.users.ProfileSettings;
|
|||
import dev.peerat.backend.routes.users.Register;
|
||||
import dev.peerat.backend.utils.Mail;
|
||||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.DependencyInjector;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Locker;
|
||||
|
@ -177,44 +178,18 @@ public class Main{
|
|||
}
|
||||
|
||||
private static void initRoutes(Router<PeerAtUser> router, DatabaseRepository repo, Configuration config) throws Exception{
|
||||
Map<String, Integer> playersWaiting = new HashMap<>();
|
||||
Mail mail = config.getMail();
|
||||
Locker<Group> groupLock = new Locker<>();
|
||||
Locker<Completion> leaderboard = new Locker<>();
|
||||
|
||||
if(config.isProduction())
|
||||
router.
|
||||
register(new Register(repo, playersWaiting, mail)).
|
||||
register(new MailConfirmation(repo, router, config.getUsersFiles(), config.getGitToken(), playersWaiting, mail));
|
||||
|
||||
router.
|
||||
register(new Login(repo, router)).
|
||||
register(new ProfileSettings(repo)).
|
||||
register(new ChangePassword(repo)).
|
||||
// register(new ForgotPassword(router, repo, mail)).
|
||||
|
||||
register(new DynamicLogs(router.getLogger(), repo)).
|
||||
register(new ExceptionLogs(router.getExceptionLogger())).
|
||||
|
||||
register(new WebHookLeaderboard(leaderboard)).
|
||||
|
||||
register(new ChapterElement(repo)).
|
||||
register(new ChapterList(repo)).
|
||||
register(new PuzzleElement(repo)).
|
||||
register(new Result(repo)).
|
||||
register(new Leaderboard(repo)).
|
||||
register(new PlayerDetails(repo)).
|
||||
register(new BadgeDetails(repo)).
|
||||
|
||||
register(new DynamicLeaderboard(repo, leaderboard)).
|
||||
register(new PuzzleResponse(repo, config.getUsersFiles(), leaderboard)).
|
||||
|
||||
register(new GroupCreate(repo, groupLock, config.getGroupJoinMinutes())).
|
||||
register(new GroupList(repo)).
|
||||
register(new GroupJoin(repo, config.getGroupJoinMinutes(), config.getGroupQuitMinutes(), leaderboard)).
|
||||
register(new GroupQuit(repo, config.getGroupJoinMinutes(), leaderboard))
|
||||
|
||||
.register(new Swagger(new RouteExtracter(router),config.getTokenIssuer()));
|
||||
router.registerPackages(new DependencyInjector()
|
||||
.of(repo, router, config.getMail(), new RouteExtracter(router))
|
||||
.of("waitting", new HashMap<>())
|
||||
.of("leaderboard", new Locker<>())
|
||||
.of("log", router.getLogger())
|
||||
.of("exception", router.getExceptionLogger())
|
||||
.of("groups", new Locker<>())
|
||||
.of("groupDelay", config.getGroupJoinMinutes())
|
||||
.of("waitTime", config.getGroupQuitMinutes())
|
||||
.of("usersFiles", config.getUsersFiles())
|
||||
.of("gitToken", config.getGitToken())
|
||||
.of("issuer", config.getTokenIssuer()));
|
||||
|
||||
// Bot bot = new Bot(config, repo, groupLock);
|
||||
// bot.start();
|
||||
|
|
|
@ -8,7 +8,9 @@ import java.sql.ResultSetMetaData;
|
|||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.SortedSet;
|
||||
import java.util.TreeSet;
|
||||
|
||||
|
@ -33,6 +35,56 @@ public class DatabaseRepository {
|
|||
this.config = config;
|
||||
}
|
||||
|
||||
public void hotfix() throws Exception{
|
||||
ensureConnection();
|
||||
|
||||
PreparedStatement stmt = con.prepareStatement("SELECT c.*, g.* FROM completions c JOIN puzzles p ON c.fk_puzzle = p.id_puzzle JOIN containsGroups cg ON cg.fk_player = c.fk_player JOIN groups g ON g.id_group = cg.fk_group WHERE g.fk_chapter = 12 AND p.fk_chapter = 12;");
|
||||
ResultSet results = stmt.executeQuery();
|
||||
List<Completionz> list = new ArrayList<>();
|
||||
while(results.next()){
|
||||
Completionz complete = new Completionz(results);
|
||||
list.add(complete);
|
||||
}
|
||||
Map<Integer, Map<Integer, Completionz>> map = new HashMap<>();
|
||||
for(Completionz comp : list){
|
||||
Map<Integer,Completionz> puz = map.get(comp.puzzle);
|
||||
if(puz == null){
|
||||
puz = new HashMap<>();
|
||||
map.put(comp.puzzle, puz);
|
||||
}
|
||||
Completionz c = puz.get(comp.groups);
|
||||
if(c == null){
|
||||
puz.put(comp.groups, comp);
|
||||
}else{
|
||||
if(comp.score >= c.score){
|
||||
puz.put(comp.groups, comp);
|
||||
System.out.println("remove compl "+c.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class Completionz{
|
||||
|
||||
public int id;
|
||||
public int puzzle;
|
||||
public int player;
|
||||
public int tries;
|
||||
public int score;
|
||||
public int groups;
|
||||
|
||||
public Completionz(ResultSet result) throws Exception{
|
||||
id = result.getInt("id_completion");
|
||||
puzzle = result.getInt("fk_puzzle");
|
||||
player = result.getInt("fk_player");
|
||||
tries = result.getInt("tries");
|
||||
score = result.getInt("score");
|
||||
groups = result.getInt("id_group");
|
||||
System.out.println(id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void ensureConnection() throws SQLException {
|
||||
if (con == null || (!con.isValid(5))) {
|
||||
this.con = DriverManager.getConnection(
|
||||
|
|
|
@ -8,6 +8,7 @@ import dev.peerat.backend.repository.DatabaseRepository;
|
|||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Injection;
|
||||
import dev.peerat.framework.Locker;
|
||||
import dev.peerat.framework.Locker.Key;
|
||||
import dev.peerat.framework.Route;
|
||||
|
@ -16,7 +17,7 @@ public class DynamicLeaderboard extends Leaderboard{
|
|||
|
||||
private Locker<Completion> locker;
|
||||
|
||||
public DynamicLeaderboard(DatabaseRepository databaseRepo, Locker<Completion> locker){
|
||||
public DynamicLeaderboard(DatabaseRepository databaseRepo, @Injection("leaderboard") Locker<Completion> locker){
|
||||
super(databaseRepo);
|
||||
this.locker = locker;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package dev.peerat.backend.routes;
|
||||
|
||||
import java.util.Base64;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.bonus.extract.RouteDoc;
|
||||
|
|
|
@ -22,6 +22,7 @@ import dev.peerat.backend.repository.DatabaseRepository;
|
|||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Injection;
|
||||
import dev.peerat.framework.Locker;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
|
@ -33,7 +34,7 @@ public class PuzzleResponse implements Response {
|
|||
|
||||
private final Locker<Completion> leaderboard;
|
||||
|
||||
public PuzzleResponse(DatabaseRepository databaseRepo, String initUsersFilesPath, Locker<Completion> locker){
|
||||
public PuzzleResponse(DatabaseRepository databaseRepo, @Injection("usersFiles") String initUsersFilesPath, @Injection("leaderboard") Locker<Completion> locker){
|
||||
this.databaseRepo = databaseRepo;
|
||||
usersFilesPath = initUsersFilesPath;
|
||||
this.leaderboard = locker;
|
||||
|
|
|
@ -6,6 +6,7 @@ import dev.peerat.backend.bonus.extract.RouteExtracter;
|
|||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Injection;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
|
||||
|
@ -13,7 +14,7 @@ public class Swagger implements Response{
|
|||
|
||||
private String json;
|
||||
|
||||
public Swagger(RouteExtracter extracter, String host){
|
||||
public Swagger(RouteExtracter extracter, @Injection("issuer") String host){
|
||||
try{
|
||||
this.json = extracter.swagger(host).toString();
|
||||
}catch(Exception e){
|
||||
|
|
|
@ -9,6 +9,7 @@ import dev.peerat.backend.repository.DatabaseRepository;
|
|||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Injection;
|
||||
import dev.peerat.framework.Locker;
|
||||
import dev.peerat.framework.Locker.Key;
|
||||
import dev.peerat.framework.Response;
|
||||
|
@ -20,7 +21,7 @@ public class DynamicLogs implements Response{
|
|||
private Locker<Context> locker; //Context
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public DynamicLogs(Locker<Context> locker, DatabaseRepository repo){
|
||||
public DynamicLogs(@Injection("log") Locker<Context> locker, DatabaseRepository repo){
|
||||
this.locker = locker;
|
||||
this.repo = repo;
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import java.util.regex.Matcher;
|
|||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Injection;
|
||||
import dev.peerat.framework.Locker;
|
||||
import dev.peerat.framework.Locker.Key;
|
||||
import dev.peerat.framework.Response;
|
||||
|
@ -16,7 +17,7 @@ public class ExceptionLogs implements Response{
|
|||
|
||||
private Locker<Exception> locker;
|
||||
|
||||
public ExceptionLogs(Locker<Exception> locker){
|
||||
public ExceptionLogs(@Injection("exception") Locker<Exception> locker){
|
||||
this.locker = locker;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import dev.peerat.backend.model.Completion;
|
|||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Injection;
|
||||
import dev.peerat.framework.Locker;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
|
@ -14,7 +15,7 @@ public class WebHookLeaderboard implements Response{
|
|||
|
||||
private Locker<Completion> locker;
|
||||
|
||||
public WebHookLeaderboard(Locker<Completion> locker){
|
||||
public WebHookLeaderboard(@Injection("leaderboard") Locker<Completion> locker){
|
||||
this.locker = locker;
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ import dev.peerat.backend.utils.FormResponse;
|
|||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Injection;
|
||||
import dev.peerat.framework.Locker;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
|
@ -25,7 +26,7 @@ public class GroupCreate extends FormResponse {
|
|||
private DatabaseRepository repo;
|
||||
private int groupDelay;
|
||||
|
||||
public GroupCreate(DatabaseRepository repo, Locker<Group> locker, int groupDelay){
|
||||
public GroupCreate(DatabaseRepository repo, @Injection("groups") Locker<Group> locker, @Injection("groupDelay") int groupDelay){
|
||||
this.repo = repo;
|
||||
this.locker = locker;
|
||||
this.groupDelay = groupDelay;
|
||||
|
|
|
@ -14,6 +14,7 @@ import dev.peerat.backend.repository.DatabaseRepository;
|
|||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Injection;
|
||||
import dev.peerat.framework.Locker;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
|
@ -26,7 +27,7 @@ public class GroupJoin implements Response{
|
|||
|
||||
private final Locker<Completion> leaderboard;
|
||||
|
||||
public GroupJoin(DatabaseRepository repo, int groupDelay, String waitTime, Locker<Completion> locker){
|
||||
public GroupJoin(DatabaseRepository repo, @Injection("groupDelay") int groupDelay, @Injection("waitTime") String waitTime, @Injection("leaderboard") Locker<Completion> locker){
|
||||
this.repo = repo;
|
||||
this.groupDelay = groupDelay;
|
||||
this.waitTime = waitTime;
|
||||
|
|
|
@ -14,6 +14,7 @@ import dev.peerat.backend.repository.DatabaseRepository;
|
|||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Injection;
|
||||
import dev.peerat.framework.Locker;
|
||||
import dev.peerat.framework.Response;
|
||||
import dev.peerat.framework.Route;
|
||||
|
@ -25,7 +26,7 @@ public class GroupQuit implements Response{
|
|||
|
||||
private final Locker<Completion> leaderboard;
|
||||
|
||||
public GroupQuit(DatabaseRepository repo, int groupDelay, Locker<Completion> locker){
|
||||
public GroupQuit(DatabaseRepository repo, @Injection("groupDelay") int groupDelay, @Injection("leaderboard") Locker<Completion> locker){
|
||||
this.repo = repo;
|
||||
this.groupDelay = groupDelay;
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ import dev.peerat.backend.utils.Mail;
|
|||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Injection;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.Router;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
@ -50,9 +51,9 @@ public class MailConfirmation extends FormResponse {
|
|||
public MailConfirmation(
|
||||
DatabaseRepository databaseRepo,
|
||||
Router<PeerAtUser> router,
|
||||
String initUsersFilesPath,
|
||||
String gitToken,
|
||||
Map<String, Integer> playersWaiting,
|
||||
@Injection("usersFiles") String initUsersFilesPath,
|
||||
@Injection("gitToken") String gitToken,
|
||||
@Injection("waitting") Map<String, Integer> playersWaiting,
|
||||
Mail mail) throws NoSuchAlgorithmException{
|
||||
|
||||
this.databaseRepo = databaseRepo;
|
||||
|
|
|
@ -13,6 +13,7 @@ import dev.peerat.backend.utils.Mail;
|
|||
import dev.peerat.framework.Context;
|
||||
import dev.peerat.framework.HttpReader;
|
||||
import dev.peerat.framework.HttpWriter;
|
||||
import dev.peerat.framework.Injection;
|
||||
import dev.peerat.framework.Route;
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
|
@ -22,7 +23,7 @@ public class Register extends FormResponse {
|
|||
private Map<String, Integer> playersWaiting;
|
||||
private Mail mail;
|
||||
|
||||
public Register(DatabaseRepository databaseRepo, Map<String, Integer> playersWaiting, Mail mail){
|
||||
public Register(DatabaseRepository databaseRepo, @Injection("waitting") Map<String, Integer> playersWaiting, Mail mail){
|
||||
this.databaseRepo = databaseRepo;
|
||||
this.playersWaiting = playersWaiting;
|
||||
this.mail = mail;
|
||||
|
|
Loading…
Add table
Reference in a new issue