Advertisement
imBEheAR

MyRegisteredUserDatabase

Jan 6th, 2022
839
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.30 KB | None | 0 0
  1. @Singleton
  2. public class MyRegisteredUserDatabase extends RegisteredUserDatabase {
  3.  
  4.     private final MySQL mySQL;
  5.     private PreparedStatement loadUserStatement;
  6.     private PreparedStatement createUserStatement;
  7.     private PreparedStatement deleteUserStatement;
  8.  
  9.     @Inject
  10.     public MyRegisteredUserDatabase(MySQL mySQL) {
  11.         this.mySQL = mySQL;
  12.     }
  13.  
  14.     @Override
  15.     public void prepare() throws SQLException {
  16.         this.mySQL.asyncQueryUpdate("CREATE TABLE IF NOT EXISTS registered_users (" +
  17.                 "uuid VARCHAR(40) UNIQUE NOT NULL PRIMARY KEY, " +
  18.                 "name VARCHAR(20) NOT NULL, " +
  19.                 "premium INT NOT NULL, " +
  20.                 "salt VARCHAR(255), " +
  21.                 "password_hash TEXT NOT NULL" +
  22.                 ")");
  23.  
  24.         this.loadUserStatement = this.mySQL.prepareStatement(
  25.                 "SELECT name, premium, salt, password_hash FROM registered_users WHERE uuid = ?"
  26.         );
  27.  
  28.         this.createUserStatement = this.mySQL.prepareStatement(
  29.                 "INSERT INTO registered_users (uuid, name, premium, salt, password_hash) VALUES (?, ?, ?, ?, ?)"
  30.         );
  31.  
  32.         this.deleteUserStatement = this.mySQL.prepareStatement(
  33.                 "DELETE FROM registered_users WHERE name = ?"
  34.         );
  35.     }
  36.  
  37.     @Override
  38.     public void loadUser(UUID uuid, Callback<RegisteredUser> callback) {
  39.         try {
  40.             this.loadUserStatement.setString(1, uuid.toString());
  41.             this.mySQL.asyncQuery(this.loadUserStatement, userResult -> {
  42.                 try {
  43.                     if (!userResult.next()) {
  44.                         callback.accept(null);
  45.                         return;
  46.                     }
  47.  
  48.                     String name = userResult.getString("name");
  49.                     boolean premium = userResult.getInt("premium") == 1;
  50.                     String hashedPassword = userResult.getString("password_hash");
  51.                     String salt = userResult.getString("salt");
  52.  
  53.                     callback.accept(new RegisteredUser(uuid, name, premium, salt, hashedPassword));
  54.                 } catch (SQLException exception) {
  55.                     exception.printStackTrace();
  56.                 }
  57.             });
  58.         } catch (SQLException exception) {
  59.             exception.printStackTrace();
  60.         }
  61.     }
  62.  
  63.     @Override
  64.     public void registerUser(RegisteredUser registeredUser) {
  65.         try {
  66.             this.createUserStatement.setString(1, registeredUser.getUuid().toString());
  67.             this.createUserStatement.setString(2, registeredUser.getName());
  68.             this.createUserStatement.setInt(3, registeredUser.isPremium() ? 1 : 0);
  69.             this.createUserStatement.setString(4, registeredUser.getSalt());
  70.             this.createUserStatement.setString(5, registeredUser.getHashedPassword());
  71.             this.mySQL.asyncQueryUpdate(this.createUserStatement);
  72.         } catch (SQLException exception) {
  73.             exception.printStackTrace();
  74.         }
  75.     }
  76.  
  77.     @Override
  78.     public void resetUser(String userName) {
  79.         try {
  80.             this.deleteUserStatement.setString(1, userName);
  81.             this.mySQL.asyncQueryUpdate(this.deleteUserStatement);
  82.         } catch (SQLException exception) {
  83.             exception.printStackTrace();
  84.         }
  85.     }
  86.  
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement