// Path: src/main/java/com/lenis0012/bukkit/loginsecurity/LoginSecurity.java
// public class LoginSecurity extends PluginHolder {
//     private static final ExecutorService executorService = Executors.newCachedThreadPool();
// 
//     /**
//      * Get the executor LoginSecurity uses for async processing.
//      *
//      * @return Executor service.
//      */
//     public static ExecutorService getExecutorService() {
//         return executorService;
//     }
// 
//     /**
//      * Get session manager.
//      *
//      * @return SessionManager
//      */
//     public static SessionManager getSessionManager() {
//         return ((LoginSecurity) getInstance()).sessionManager;
//     }
// 
//     /**
//      * Get configuration settings.
//      *
//      * @return Configuration
//      */
//     public static LoginSecurityConfig getConfiguration() {
//         return ((LoginSecurity) getInstance()).config();
//     }
// 
//     public static LoginSecurityDatabase getDatastore() { return ((LoginSecurity) getInstance()).datastore(); }
// 
//     /**
//      * Translate a message by key.
//      *
//      * @param key Key to translate
//      * @return Translated version by key and selected language
//      */
//     public static TranslatedMessage translate(LanguageKeys key) {
//         return getInstance().getModule(LanguageModule.class).translate(key);
//     }
// 
//     /**
//      * Translate a message by key.
//      *
//      * @param key Key to translate
//      * @return Translated version by key and selected language
//      */
//     public static TranslatedMessage translate(String key) {
//         return getInstance().getModule(LanguageModule.class).translate(key);
//     }
// 
//     private LoginSecurityConfig config;
//     private SessionManager sessionManager;
// 
//     public LoginSecurity() {
//         super(ConfigurationModule.class);
//     }
// 
//     @Override
//     public void enable() {
//         // Load config
//         ConfigurationModule module = getModule(ConfigurationModule.class);
//         this.config = module.createCustomConfig(LoginSecurityConfig.class);
//         config.reload();
//         config.save();
// 
//         // Load session manager
//         this.sessionManager = new SessionManager();
// 
//         // Filter log
//         org.apache.logging.log4j.core.Logger consoleLogger = (org.apache.logging.log4j.core.Logger) LogManager.getRootLogger();
//         consoleLogger.addFilter(new LoggingFilter());
// 
//         // Register modules
//         registry.registerModules(
//                 LanguageModule.class,
//                 NewStorageModule.class,
//                 GeneralModule.class,
//                 ThreadingModule.class,
//                 CaptchaManager.class);
//     }
// 
//     @Override
//     public void disable() {
//         // Wait for all async processes to complete...
//         getLogger().log(Level.INFO, "Waiting for queued tasks...");
//         executorService.shutdown();
//         getLogger().log(Level.INFO, "ExecutorService shut down, ready to disable.");
//     }
// 
//     public LoginSecurityConfig config() {
//         return config;
//     }
// 
//     public LoginSecurityDatabase datastore() {
//         return getModule(NewStorageModule.class).getDatabase();
//     }
// }


import com.lenis0012.bukkit.loginsecurity.LoginSecurity;
import lombok.Getter;
import javax.sql.DataSource;
package com.lenis0012.bukkit.loginsecurity.database;



@Getter
public class LoginSecurityDatabase {
// Path: src/main/java/com/lenis0012/bukkit/loginsecurity/LoginSecurity.java
// public class LoginSecurity extends PluginHolder {
//     private static final ExecutorService executorService = Executors.newCachedThreadPool();
// 
//     /**
//      * Get the executor LoginSecurity uses for async processing.
//      *
//      * @return Executor service.
//      */
//     public static ExecutorService getExecutorService() {
//         return executorService;
//     }
// 
//     /**
//      * Get session manager.
//      *
//      * @return SessionManager
//      */
//     public static SessionManager getSessionManager() {
//         return ((LoginSecurity) getInstance()).sessionManager;
//     }
// 
//     /**
//      * Get configuration settings.
//      *
//      * @return Configuration
//      */
//     public static LoginSecurityConfig getConfiguration() {
//         return ((LoginSecurity) getInstance()).config();
//     }
// 
//     public static LoginSecurityDatabase getDatastore() { return ((LoginSecurity) getInstance()).datastore(); }
// 
//     /**
//      * Translate a message by key.
//      *
//      * @param key Key to translate
//      * @return Translated version by key and selected language
//      */
//     public static TranslatedMessage translate(LanguageKeys key) {
//         return getInstance().getModule(LanguageModule.class).translate(key);
//     }
// 
//     /**
//      * Translate a message by key.
//      *
//      * @param key Key to translate
//      * @return Translated version by key and selected language
//      */
//     public static TranslatedMessage translate(String key) {
//         return getInstance().getModule(LanguageModule.class).translate(key);
//     }
// 
//     private LoginSecurityConfig config;
//     private SessionManager sessionManager;
// 
//     public LoginSecurity() {
//         super(ConfigurationModule.class);
//     }
// 
//     @Override
//     public void enable() {
//         // Load config
//         ConfigurationModule module = getModule(ConfigurationModule.class);
//         this.config = module.createCustomConfig(LoginSecurityConfig.class);
//         config.reload();
//         config.save();
// 
//         // Load session manager
//         this.sessionManager = new SessionManager();
// 
//         // Filter log
//         org.apache.logging.log4j.core.Logger consoleLogger = (org.apache.logging.log4j.core.Logger) LogManager.getRootLogger();
//         consoleLogger.addFilter(new LoggingFilter());
// 
//         // Register modules
//         registry.registerModules(
//                 LanguageModule.class,
//                 NewStorageModule.class,
//                 GeneralModule.class,
//                 ThreadingModule.class,
//                 CaptchaManager.class);
//     }
// 
//     @Override
//     public void disable() {
//         // Wait for all async processes to complete...
//         getLogger().log(Level.INFO, "Waiting for queued tasks...");
//         executorService.shutdown();
//         getLogger().log(Level.INFO, "ExecutorService shut down, ready to disable.");
//     }
// 
//     public LoginSecurityConfig config() {
//         return config;
//     }
// 
//     public LoginSecurityDatabase datastore() {
//         return getModule(NewStorageModule.class).getDatabase();
//     }
// }


// Path: src/main/java/com/lenis0012/bukkit/loginsecurity/database/LoginSecurityDatabase.java
import com.lenis0012.bukkit.loginsecurity.LoginSecurity;
import lombok.Getter;
import javax.sql.DataSource;

package com.lenis0012.bukkit.loginsecurity.database;



@Getter
public class LoginSecurityDatabase {
    public static final int BATCH_SIZE = 1000;