Admin CRUD Tags
This commit is contained in:
parent
a7b87bcf12
commit
d089ff237a
9 changed files with 259 additions and 2 deletions
|
@ -31,6 +31,11 @@ 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.admins.puzzle.GetPuzzles;
|
||||
import dev.peerat.backend.routes.admins.tag.AddTag;
|
||||
import dev.peerat.backend.routes.admins.tag.DeleteTag;
|
||||
import dev.peerat.backend.routes.admins.tag.EditTag;
|
||||
import dev.peerat.backend.routes.admins.tag.GetTags;
|
||||
import dev.peerat.backend.routes.groups.GroupCreate;
|
||||
import dev.peerat.backend.routes.groups.GroupJoin;
|
||||
import dev.peerat.backend.routes.groups.GroupList;
|
||||
|
@ -171,6 +176,12 @@ public class Main{
|
|||
register(new DeletePuzzle(repo)).
|
||||
register(new EditPuzzle(repo)).
|
||||
register(new GetPuzzle(repo)).
|
||||
register(new GetPuzzles(repo)).
|
||||
|
||||
register(new AddTag(repo)).
|
||||
register(new DeleteTag(repo)).
|
||||
register(new EditTag(repo)).
|
||||
register(new GetTags(repo)).
|
||||
|
||||
register(new ChapterElement(repo)).
|
||||
register(new ChapterList(repo)).
|
||||
|
|
30
src/dev/peerat/backend/model/Tag.java
Normal file
30
src/dev/peerat/backend/model/Tag.java
Normal file
|
@ -0,0 +1,30 @@
|
|||
package dev.peerat.backend.model;
|
||||
|
||||
import dev.peerat.framework.utils.json.JsonMap;
|
||||
|
||||
public class Tag{
|
||||
|
||||
private int id;
|
||||
private String name;
|
||||
|
||||
public Tag(int id, String name){
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public int getId(){
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public String getName(){
|
||||
return this.name;
|
||||
}
|
||||
|
||||
public JsonMap toJson(){
|
||||
JsonMap result = new JsonMap();
|
||||
result.set("id", id);
|
||||
result.set("name", name);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
|
@ -99,8 +99,14 @@ public enum DatabaseQuery {
|
|||
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 * FROM puzzles WHERE id_puzzle = ?"),
|
||||
|
||||
GET_PUZZLE("SELECT * FROM puzzles p LEFT JOIN containsTags ct ON ct.fk_puzzle = p.id_puzzle LEFT JOIN tags t ON t.id_tag = ct.fk_tag WHERE p.id_puzzle = ?"),
|
||||
GET_PUZZLES("SELECT * FROM puzzles p LEFT JOIN containsTags ct ON ct.fk_puzzle = p.id_puzzle LEFT JOIN tags t ON t.id_tag = ct.fk_tag"),
|
||||
|
||||
ADD_TAG("INSERT INTO tags (name) VALUES (?)"),
|
||||
DELETE_TAG("DELETE FROM tags WHERE id_tag = ?"),
|
||||
EDIT_TAG("UPDATE tags SET name = ? WHERE id_tag = ?"),
|
||||
GET_TAGS("SELECT * FROM tags"),
|
||||
|
||||
//TRIGGER
|
||||
FIRST_TRY("CREATE OR REPLACE TRIGGER FirstTry\r\n"
|
||||
+ "AFTER INSERT\r\n"
|
||||
|
|
|
@ -22,6 +22,7 @@ import dev.peerat.backend.model.Group;
|
|||
import dev.peerat.backend.model.PeerAtUser;
|
||||
import dev.peerat.backend.model.Player;
|
||||
import dev.peerat.backend.model.Puzzle;
|
||||
import dev.peerat.backend.model.Tag;
|
||||
|
||||
public class DatabaseRepository {
|
||||
|
||||
|
@ -727,6 +728,38 @@ public class DatabaseRepository {
|
|||
return null;
|
||||
}
|
||||
|
||||
public List<Puzzle> getAdminPuzzles(){
|
||||
try {
|
||||
ensureConnection();
|
||||
PreparedStatement chapterStmt = DatabaseQuery.GET_PUZZLES.prepare(this.con);
|
||||
ResultSet chapterResult = chapterStmt.executeQuery();
|
||||
List<Puzzle> list = new ArrayList<>();
|
||||
while(chapterResult.next()){
|
||||
list.add(makePuzzle(chapterResult));
|
||||
}
|
||||
return list;
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<Tag> getAdminTags(){
|
||||
try {
|
||||
ensureConnection();
|
||||
PreparedStatement chapterStmt = DatabaseQuery.GET_TAGS.prepare(this.con);
|
||||
ResultSet chapterResult = chapterStmt.executeQuery();
|
||||
List<Tag> list = new ArrayList<>();
|
||||
while(chapterResult.next()){
|
||||
list.add(new Tag(chapterResult.getInt("id_tag"), chapterResult.getString("name")));
|
||||
}
|
||||
return list;
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean adminAddChapter(Chapter chapter) throws SQLException {
|
||||
ensureConnection();
|
||||
PreparedStatement statement = DatabaseQuery.ADD_CHAPTER.prepare(this.con);
|
||||
|
@ -748,6 +781,13 @@ public class DatabaseRepository {
|
|||
return (statement.executeUpdate() >= 0);
|
||||
}
|
||||
|
||||
public boolean adminAddTag(String name) throws SQLException {
|
||||
ensureConnection();
|
||||
PreparedStatement statement = DatabaseQuery.ADD_TAG.prepare(this.con);
|
||||
statement.setString(1, name);
|
||||
return (statement.executeUpdate() >= 0);
|
||||
}
|
||||
|
||||
public boolean adminUpdateChapter(int id, Chapter chapter) throws SQLException {
|
||||
ensureConnection();
|
||||
PreparedStatement statement = DatabaseQuery.EDIT_CHAPTER.prepare(this.con);
|
||||
|
@ -771,6 +811,14 @@ public class DatabaseRepository {
|
|||
return (statement.executeUpdate() >= 0);
|
||||
}
|
||||
|
||||
public boolean adminUpdateTag(Tag tag) throws SQLException {
|
||||
ensureConnection();
|
||||
PreparedStatement statement = DatabaseQuery.EDIT_TAG.prepare(this.con);
|
||||
statement.setString(1, tag.getName());
|
||||
statement.setInt(2, tag.getId());
|
||||
return (statement.executeUpdate() >= 0);
|
||||
}
|
||||
|
||||
public boolean adminDeleteChapter(int id) throws SQLException {
|
||||
ensureConnection();
|
||||
PreparedStatement statement = DatabaseQuery.DELETE_CHAPTER.prepare(this.con);
|
||||
|
@ -784,4 +832,11 @@ public class DatabaseRepository {
|
|||
statement.setInt(1, id);
|
||||
return (statement.executeUpdate() >= 0);
|
||||
}
|
||||
|
||||
public boolean adminDeleteTag(int id) throws SQLException {
|
||||
ensureConnection();
|
||||
PreparedStatement statement = DatabaseQuery.DELETE_TAG.prepare(this.con);
|
||||
statement.setInt(1, id);
|
||||
return (statement.executeUpdate() >= 0);
|
||||
}
|
||||
}
|
24
src/dev/peerat/backend/routes/admins/puzzle/GetPuzzles.java
Normal file
24
src/dev/peerat/backend/routes/admins/puzzle/GetPuzzles.java
Normal file
|
@ -0,0 +1,24 @@
|
|||
package dev.peerat.backend.routes.admins.puzzle;
|
||||
|
||||
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 GetPuzzles implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public GetPuzzles(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/puzzles/$", needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
}
|
||||
|
||||
}
|
33
src/dev/peerat/backend/routes/admins/tag/AddTag.java
Normal file
33
src/dev/peerat/backend/routes/admins/tag/AddTag.java
Normal file
|
@ -0,0 +1,33 @@
|
|||
package dev.peerat.backend.routes.admins.tag;
|
||||
|
||||
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 AddTag implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public AddTag(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/tag/$", type = POST, needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
JsonMap json = reader.readJson();
|
||||
if(repo.adminAddTag(json.get("name"))){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
31
src/dev/peerat/backend/routes/admins/tag/DeleteTag.java
Normal file
31
src/dev/peerat/backend/routes/admins/tag/DeleteTag.java
Normal file
|
@ -0,0 +1,31 @@
|
|||
package dev.peerat.backend.routes.admins.tag;
|
||||
|
||||
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 DeleteTag implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public DeleteTag(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/tag/(\\d+)$", type = DELETE, needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
if(this.repo.adminDeleteTag(Integer.parseInt(matcher.group(1)))){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
34
src/dev/peerat/backend/routes/admins/tag/EditTag.java
Normal file
34
src/dev/peerat/backend/routes/admins/tag/EditTag.java
Normal file
|
@ -0,0 +1,34 @@
|
|||
package dev.peerat.backend.routes.admins.tag;
|
||||
|
||||
import static dev.peerat.framework.RequestType.PUT;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.model.Tag;
|
||||
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 EditTag implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public EditTag(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/tag/(\\d+)$", type = PUT, needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
JsonMap json = reader.readJson();
|
||||
if(repo.adminUpdateTag(new Tag(Integer.parseInt(matcher.group(1)), json.get("name")))){
|
||||
context.response(200);
|
||||
}else{
|
||||
context.response(501);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
33
src/dev/peerat/backend/routes/admins/tag/GetTags.java
Normal file
33
src/dev/peerat/backend/routes/admins/tag/GetTags.java
Normal file
|
@ -0,0 +1,33 @@
|
|||
package dev.peerat.backend.routes.admins.tag;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import dev.peerat.backend.model.Tag;
|
||||
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.JsonArray;
|
||||
|
||||
public class GetTags implements Response{
|
||||
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public GetTags(DatabaseRepository repo){
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
@Route(path = "^/admin/tag/$", needLogin = true)
|
||||
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
|
||||
List<Tag> list = repo.getAdminTags();
|
||||
JsonArray json = new JsonArray();
|
||||
for(Tag tag : list) json.add(tag.toJson());
|
||||
context.response(200);
|
||||
writer.write(json.toString());
|
||||
writer.flush();
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Reference in a new issue