Admin logs -> request type in String + base route for editing chapter & puzzle

This commit is contained in:
jeffcheasey88 2024-03-14 13:17:07 +01:00
parent 68dd312a42
commit 3b98624df9
12 changed files with 312 additions and 2 deletions

View file

@ -23,6 +23,14 @@ import dev.peerat.backend.routes.PuzzleResponse;
import dev.peerat.backend.routes.Result; import dev.peerat.backend.routes.Result;
import dev.peerat.backend.routes.Swagger; import dev.peerat.backend.routes.Swagger;
import dev.peerat.backend.routes.admins.DynamicLogs; import dev.peerat.backend.routes.admins.DynamicLogs;
import dev.peerat.backend.routes.admins.chapter.AddChapter;
import dev.peerat.backend.routes.admins.chapter.DeleteChapter;
import dev.peerat.backend.routes.admins.chapter.EditChapter;
import dev.peerat.backend.routes.admins.chapter.GetChapter;
import dev.peerat.backend.routes.admins.puzzle.AddPuzzle;
import dev.peerat.backend.routes.admins.puzzle.DeletePuzzle;
import dev.peerat.backend.routes.admins.puzzle.EditPuzzle;
import dev.peerat.backend.routes.admins.puzzle.GetPuzzle;
import dev.peerat.backend.routes.groups.GroupCreate; import dev.peerat.backend.routes.groups.GroupCreate;
import dev.peerat.backend.routes.groups.GroupJoin; import dev.peerat.backend.routes.groups.GroupJoin;
import dev.peerat.backend.routes.groups.GroupList; import dev.peerat.backend.routes.groups.GroupList;
@ -88,7 +96,7 @@ public class Main{
router.addInterceptor(new RouteInterceptor(){ router.addInterceptor(new RouteInterceptor(){
@Override @Override
public boolean intercept(Matcher matcher, Context context, HttpReader reader, HttpWriter writer, Method method){ public boolean intercept(Matcher matcher, Context context, HttpReader reader, HttpWriter writer, Method method){
if(method.getDeclaringClass().getPackage().getName().endsWith("admins")){ if(method.getDeclaringClass().getPackage().getName().contains(".admins")){
try { try {
Group group = repo.getPlayerGroup(context.<PeerAtUser>getUser().getId(), 1); Group group = repo.getPlayerGroup(context.<PeerAtUser>getUser().getId(), 1);
if(!group.getName().equalsIgnoreCase("Quarter-Master - Battles PAC x CEI")) return false; if(!group.getName().equalsIgnoreCase("Quarter-Master - Battles PAC x CEI")) return false;
@ -144,6 +152,15 @@ public class Main{
register(new ForgotPassword(router, repo, mail)). register(new ForgotPassword(router, repo, mail)).
register(new DynamicLogs(router.getLogger(), repo)). register(new DynamicLogs(router.getLogger(), repo)).
register(new AddChapter(repo)).
register(new DeleteChapter(repo)).
register(new EditChapter(repo)).
register(new GetChapter(repo)).
register(new AddPuzzle(repo)).
register(new DeletePuzzle(repo)).
register(new EditPuzzle(repo)).
register(new GetPuzzle(repo)).
register(new ChapterElement(repo)). register(new ChapterElement(repo)).
register(new ChapterList(repo)). register(new ChapterList(repo)).

View file

@ -90,6 +90,17 @@ public enum DatabaseQuery {
GET_BADGE("SELECT * FROM badges WHERE id_badge = ?"), GET_BADGES_OF_PLAYER( GET_BADGE("SELECT * FROM badges WHERE id_badge = ?"), GET_BADGES_OF_PLAYER(
"SELECT * FROM badges b LEFT JOIN containsBadges cb ON cb.fk_badge = b.id_badge WHERE cb.fk_player = ?"), "SELECT * FROM badges b LEFT JOIN containsBadges cb ON cb.fk_badge = b.id_badge WHERE cb.fk_player = ?"),
//ADMIN
ADD_CHAPTER("INSERT INTO chapters (name, start_date, end_date) VALUES (?,?,?)"),
DELETE_CHAPTER("DELETE FROM chapters WHERE id_chapter = ?"),
EDIT_CHAPTER("UPDATE chapters SET name = ?, start_date = ?, end_date = ? WHERE id_chapter = ?"),
GET_CHAPTER("SELECT name, start_date, end_date FROM chapters WHERE id_chapter = ?"),
ADD_PUZZLE("INSERT INTO puzzles (name, content, soluce, verify, score_max, fk_chapter) VALUES (?,?,?,?,?,?)"),
DELETE_PUZZLE("DELETE FROM puzzles WHERE id_puzzle = ?"),
EDIT_PUZZLE("UPDATE puzzles SET name = ?, content = ?, soluce = ?, verify = ?, score_max = ?, fk_chapter = ? WHERE id_puzzle = ?"),
GET_PUZZLE("SELECT name, content, soluce, verify, score_max, fk_chapter FROM puzzles WHERE id_puzzle = ?"),
//TRIGGER //TRIGGER
FIRST_TRY("CREATE OR REPLACE TRIGGER FirstTry\r\n" FIRST_TRY("CREATE OR REPLACE TRIGGER FirstTry\r\n"
+ "AFTER INSERT\r\n" + "AFTER INSERT\r\n"

View file

@ -692,4 +692,37 @@ public class DatabaseRepository {
statement.setInt(5, user); statement.setInt(5, user);
statement.executeUpdate(); statement.executeUpdate();
} }
//ADMIN
public Chapter getAdminChapter(int id){
try {
ensureConnection();
PreparedStatement chapterStmt = DatabaseQuery.GET_CHAPTER.prepare(this.con);
chapterStmt.setInt(1, id);
ResultSet chapterResult = chapterStmt.executeQuery();
if (chapterResult.next()) {
Chapter chapter = makeChapter(chapterResult);
return chapter;
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public Puzzle getAdminPuzzle(int id){
try {
ensureConnection();
PreparedStatement chapterStmt = DatabaseQuery.GET_PUZZLE.prepare(this.con);
chapterStmt.setInt(1, id);
ResultSet chapterResult = chapterStmt.executeQuery();
if (chapterResult.next()) {
return makePuzzle(chapterResult);
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
} }

View file

@ -41,7 +41,7 @@ public class DynamicLogs implements Response{
json.set("logged", instance.isLogged()); json.set("logged", instance.isLogged());
if(instance.isLogged()) json.set("pseudo", repo.getPlayer(instance.<PeerAtUser>getUser().getId()).getPseudo()); if(instance.isLogged()) json.set("pseudo", repo.getPlayer(instance.<PeerAtUser>getUser().getId()).getPseudo());
json.set("path", instance.getPath()); json.set("path", instance.getPath());
json.set("type", instance.getType()); json.set("type", instance.getType().toString());
json.set("code", instance.getResponseCode()); json.set("code", instance.getResponseCode());
writer.write(json.toString()); writer.write(json.toString());

View file

@ -0,0 +1,33 @@
package dev.peerat.backend.routes.admins.chapter;
import static dev.peerat.framework.RequestType.POST;
import java.sql.Timestamp;
import java.util.regex.Matcher;
import dev.peerat.backend.model.Chapter;
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.Response;
import dev.peerat.framework.Route;
import dev.peerat.framework.utils.json.JsonMap;
public class AddChapter implements Response{
private DatabaseRepository repo;
public AddChapter(DatabaseRepository repo){
this.repo = repo;
}
@Route(path = "^/admin/chapter/$", type = POST, needLogin = true)
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
JsonMap json = reader.readJson();
Chapter chapter = new Chapter(-1, json.get("name"), Timestamp.valueOf(json.<String>get("start")), Timestamp.valueOf(json.<String>get("end")));
}
}

View file

@ -0,0 +1,27 @@
package dev.peerat.backend.routes.admins.chapter;
import static dev.peerat.framework.RequestType.DELETE;
import java.util.regex.Matcher;
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.Response;
import dev.peerat.framework.Route;
public class DeleteChapter implements Response{
private DatabaseRepository repo;
public DeleteChapter(DatabaseRepository repo){
this.repo = repo;
}
@Route(path = "^/admin/chapter/(\\d+)$", type = DELETE, needLogin = true)
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
int id = Integer.parseInt(matcher.group(1));
}
}

View file

@ -0,0 +1,30 @@
package dev.peerat.backend.routes.admins.chapter;
import static dev.peerat.framework.RequestType.PUT;
import java.util.regex.Matcher;
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.Response;
import dev.peerat.framework.Route;
import dev.peerat.framework.utils.json.JsonMap;
public class EditChapter implements Response{
private DatabaseRepository repo;
public EditChapter(DatabaseRepository repo){
this.repo = repo;
}
@Route(path = "^/admin/chapter/(\\d+)$", type = PUT, needLogin = true)
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
JsonMap json = reader.readJson();
}
}

View file

@ -0,0 +1,34 @@
package dev.peerat.backend.routes.admins.chapter;
import java.util.regex.Matcher;
import dev.peerat.backend.model.Chapter;
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.Response;
import dev.peerat.framework.Route;
import dev.peerat.framework.utils.json.JsonMap;
public class GetChapter implements Response{
private DatabaseRepository repo;
public GetChapter(DatabaseRepository repo){
this.repo = repo;
}
@Route(path = "^/admin/chapter/(\\d+)$", needLogin = true)
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
Chapter chapter = this.repo.getAdminChapter(Integer.parseInt(matcher.group(1)));
JsonMap json = new JsonMap();
json.set("name", chapter.getName());
json.set("start", chapter.getStartDate());
json.set("end", chapter.getEndDate());
context.response(200);
writer.write(json.toString()+"\n");
}
}

View file

@ -0,0 +1,30 @@
package dev.peerat.backend.routes.admins.puzzle;
import static dev.peerat.framework.RequestType.POST;
import java.util.regex.Matcher;
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.Response;
import dev.peerat.framework.Route;
import dev.peerat.framework.utils.json.JsonMap;
public class AddPuzzle implements Response{
private DatabaseRepository repo;
public AddPuzzle(DatabaseRepository repo){
this.repo = repo;
}
@Route(path = "^/admin/puzzle/$", type = POST, needLogin = true)
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
JsonMap json = reader.readJson();
}
}

View file

@ -0,0 +1,30 @@
package dev.peerat.backend.routes.admins.puzzle;
import static dev.peerat.framework.RequestType.DELETE;
import java.util.regex.Matcher;
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.Response;
import dev.peerat.framework.Route;
import dev.peerat.framework.utils.json.JsonMap;
public class DeletePuzzle implements Response{
private DatabaseRepository repo;
public DeletePuzzle(DatabaseRepository repo){
this.repo = repo;
}
@Route(path = "^/admin/puzzle/(\\d+)$", type = DELETE, needLogin = true)
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
JsonMap json = reader.readJson();
}
}

View file

@ -0,0 +1,30 @@
package dev.peerat.backend.routes.admins.puzzle;
import static dev.peerat.framework.RequestType.PUT;
import java.util.regex.Matcher;
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.Response;
import dev.peerat.framework.Route;
import dev.peerat.framework.utils.json.JsonMap;
public class EditPuzzle implements Response{
private DatabaseRepository repo;
public EditPuzzle(DatabaseRepository repo){
this.repo = repo;
}
@Route(path = "^/admin/puzzle/(\\d+)$", type = PUT, needLogin = true)
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
JsonMap json = reader.readJson();
}
}

View file

@ -0,0 +1,35 @@
package dev.peerat.backend.routes.admins.puzzle;
import java.util.regex.Matcher;
import dev.peerat.backend.model.Puzzle;
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.Response;
import dev.peerat.framework.Route;
import dev.peerat.framework.utils.json.JsonMap;
public class GetPuzzle implements Response{
private DatabaseRepository repo;
public GetPuzzle(DatabaseRepository repo){
this.repo = repo;
}
@Route(path = "^/admin/puzzle/(\\d+)$", needLogin = true)
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
Puzzle puzzle = this.repo.getAdminPuzzle(Integer.parseInt(matcher.group(1)));
JsonMap json = new JsonMap();
json.set("name", puzzle.getName());
json.set("content", puzzle.getContent());
json.set("soluce", puzzle.getSoluce());
json.set("score_max", puzzle.getScoreMax());
context.response(200);
writer.write(json.toString()+"\n");
}
}