Take new groups table into account on register player
This commit is contained in:
parent
05ff24de32
commit
241c55abe0
2 changed files with 38 additions and 20 deletions
|
@ -13,7 +13,8 @@ public enum DatabaseQuery {
|
||||||
ALL_GROUPS("SELCT * FROM groups"),
|
ALL_GROUPS("SELCT * FROM groups"),
|
||||||
CHECK_PSEUDO_AVAILABLE_QUERY("SELECT * FROM players WHERE pseudo = ?"),
|
CHECK_PSEUDO_AVAILABLE_QUERY("SELECT * FROM players WHERE pseudo = ?"),
|
||||||
CHECK_EMAIL_AVAILABLE_QUERY("SELECT * FROM players WHERE email = ?"),
|
CHECK_EMAIL_AVAILABLE_QUERY("SELECT * FROM players WHERE email = ?"),
|
||||||
REGISTER_QUERY("INSERT INTO players (pseudo, email, passwd, firstname, lastname, description, sgroup, avatar) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"),
|
REGISTER_QUERY("INSERT INTO players (pseudo, email, passwd, firstname, lastname, description, avatar) VALUES (?, ?, ?, ?, ?, ?, ?)"),
|
||||||
|
REGISTER_PLAYER_IN_EXISTING_GROUP("INSERT INTO containsGroups (fk_player, fk_group) VALUES (?, (SELECT id_group FROM groups WHERE name = ?));"),
|
||||||
CHECK_PASSWORD("SELECT id_player, passwd FROM players WHERE pseudo=?"),
|
CHECK_PASSWORD("SELECT id_player, passwd FROM players WHERE pseudo=?"),
|
||||||
SCORE("SELECT score FROM completions WHERE fk_player = ? AND fk_puzzle = ?"),
|
SCORE("SELECT score FROM completions WHERE fk_player = ? AND fk_puzzle = ?"),
|
||||||
GET_COMPLETION("SELECT id_completion, tries, fileName, score FROM completions WHERE fk_puzzle = ? AND fk_player = ?"),
|
GET_COMPLETION("SELECT id_completion, tries, fileName, score FROM completions WHERE fk_puzzle = ? AND fk_player = ?"),
|
||||||
|
|
|
@ -307,7 +307,8 @@ public class DatabaseRepository {
|
||||||
List<Group> list = new ArrayList<>();
|
List<Group> list = new ArrayList<>();
|
||||||
PreparedStatement stmt = DatabaseQuery.ALL_GROUPS.prepare(this.con);
|
PreparedStatement stmt = DatabaseQuery.ALL_GROUPS.prepare(this.con);
|
||||||
ResultSet groupResult = stmt.executeQuery();
|
ResultSet groupResult = stmt.executeQuery();
|
||||||
while(groupResult.next()) list.add(makeGroup(groupResult));
|
while (groupResult.next())
|
||||||
|
list.add(makeGroup(groupResult));
|
||||||
return list;
|
return list;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -366,19 +367,34 @@ public class DatabaseRepository {
|
||||||
Hash hash = Password.hash(password).withArgon2();
|
Hash hash = Password.hash(password).withArgon2();
|
||||||
try {
|
try {
|
||||||
ensureConnection();
|
ensureConnection();
|
||||||
PreparedStatement statement = con.prepareStatement(DatabaseQuery.REGISTER_QUERY.toString(), Statement.RETURN_GENERATED_KEYS);
|
con.setAutoCommit(false);
|
||||||
statement.setString(1, pseudo);
|
try (PreparedStatement playerStatement = con.prepareStatement(DatabaseQuery.REGISTER_QUERY.toString(),
|
||||||
statement.setString(2, email);
|
Statement.RETURN_GENERATED_KEYS)) {
|
||||||
statement.setString(3, hash.getResult());
|
playerStatement.setString(1, pseudo);
|
||||||
statement.setString(4, firstname);
|
playerStatement.setString(2, email);
|
||||||
statement.setString(5, lastname);
|
playerStatement.setString(3, hash.getResult());
|
||||||
statement.setString(6, description);
|
playerStatement.setString(4, firstname);
|
||||||
statement.setString(7, sgroup);
|
playerStatement.setString(5, lastname);
|
||||||
statement.setString(8, avatar);
|
playerStatement.setString(6, description);
|
||||||
if (statement.executeUpdate() == 1) {
|
playerStatement.setString(7, avatar);
|
||||||
ResultSet inserted = statement.getGeneratedKeys();
|
if (playerStatement.executeUpdate() == 1) {
|
||||||
if (inserted.next())
|
ResultSet inserted = playerStatement.getGeneratedKeys();
|
||||||
return inserted.getInt(1);
|
if (inserted.next()) {
|
||||||
|
int newPlayerId = inserted.getInt(1);
|
||||||
|
try (PreparedStatement containsGroupsStatement = con.prepareStatement(DatabaseQuery.REGISTER_PLAYER_IN_EXISTING_GROUP.toString())) {
|
||||||
|
containsGroupsStatement.setInt(1, newPlayerId);
|
||||||
|
containsGroupsStatement.setString(2, sgroup);
|
||||||
|
containsGroupsStatement.executeUpdate();
|
||||||
|
con.commit();
|
||||||
|
con.setAutoCommit(true);
|
||||||
|
return newPlayerId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (SQLException e) {
|
||||||
|
con.rollback();
|
||||||
|
con.setAutoCommit(true);
|
||||||
}
|
}
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -396,7 +412,8 @@ public class DatabaseRepository {
|
||||||
public int login(String username, String password) {
|
public int login(String username, String password) {
|
||||||
try {
|
try {
|
||||||
ensureConnection();
|
ensureConnection();
|
||||||
PreparedStatement statement = con.prepareStatement(DatabaseQuery.CHECK_PASSWORD.toString());DatabaseQuery.PUZZLES_IN_CHAPTER_QUERY.prepare(this.con);
|
PreparedStatement statement = con.prepareStatement(DatabaseQuery.CHECK_PASSWORD.toString());
|
||||||
|
DatabaseQuery.PUZZLES_IN_CHAPTER_QUERY.prepare(this.con);
|
||||||
statement.setString(1, username);
|
statement.setString(1, username);
|
||||||
ResultSet result = statement.executeQuery();
|
ResultSet result = statement.executeQuery();
|
||||||
if (result.next()) {
|
if (result.next()) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue