Skip to content
Snippets Groups Projects
Select Git revision
  • 7cc1ee2e2a00e0cfa71eb4437f96ff1f140ad802
  • main default protected
  • dev
3 results

index.js

Blame
  • Database.java 3.85 KiB
    package com.slprojects.slcraftplugin.utils;
    
    import com.slprojects.slcraftplugin.models.UserSetting;
    import com.slprojects.slcraftplugin.utils.database.Configuration;
    import net.luckperms.api.model.user.User;
    import org.bjloquent.Connector;
    import org.bjloquent.Model;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.List;
    
    @SuppressWarnings("UnusedReturnValue")
    public class Database {
        static final private String userSettingsTabName = "site_userSetting";
        static Connection connection = null;
        static Connector jLoquentConnector = null;
    
        /**
         * Récupère une valeur dans la table site_userSetting
         *
         * @param uuid UUID du joueur
         * @param key  Nom de la clé
         * @return Valeur de la clé
         */
        public static String getUserSetting(String uuid, String key) {
            List<UserSetting> settings = Model.where(
                    UserSetting.class,
                    new String[]{"uuid", "name"},
                    new String[]{"=", "="},
                    new String[]{uuid, key}
            );
    
            if (settings.size() != 1) {
                return null;
            }
    
            return (settings.get(0)).getValue();
        }
    
        /**
         * Ajoute ou modifie une valeur dans la table site_userSetting
         *
         * @param uuid  UUID du joueur
         * @param key   Nom de la clé
         * @param value Valeur de la clé
         */
        public static void setUserSetting(String uuid, String key, String value) {
            List<UserSetting> userSettingExists = Model.where(
                    UserSetting.class,
                    new String[]{"uuid", "name"},
                    new String[]{"=", "="},
                    new String[]{uuid, key}
            );
    
            if (userSettingExists.size() == 0) {
                UserSetting userSetting = new UserSetting();
                userSetting.setUuid(uuid);
                userSetting.setName(key);
                userSetting.setValue(value);
                userSetting.create();
            } else {
                UserSetting userSetting = userSettingExists.get(0);
                userSetting.setValue(value);
                userSetting.save();
            }
        }
    
        /**
         * Ouvre une connexion à la base de données
         *
         * @return Connection
         */
        public static Connection bddOpenConn() throws SQLException {
            jLoquentConnector = Connector.getInstance();
            jLoquentConnector.setDBConfig(new Configuration());
            connection = jLoquentConnector.open();
            return connection;
        }
    
        /**
         * Ferme la connexion à la base de données
         */
        public static void bddCloseConn() throws SQLException {
            connection.close();
            jLoquentConnector.close();
        }
    
        public static void initDatabase() {
            try {
                PreparedStatement ps = connection.prepareStatement("CREATE TABLE IF NOT EXISTS `site_userSetting` (\n" +
                        "  `uuid` varchar(36) NOT NULL DEFAULT '',\n" +
                        "  `name` varchar(128) NOT NULL,\n" +
                        "  `value` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,\n" +
                        "  PRIMARY KEY (`uuid`,`name`) USING BTREE\n" +
                        ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
                ps.executeQuery();
                ps = connection.prepareStatement("CREATE TABLE IF NOT EXISTS `site_linkCode` (\n" +
                        " `uuid` VARCHAR(36) NOT NULL,\n" +
                        " `code` VARCHAR(8) NOT NULL,\n" +
                        " `time` TIMESTAMP NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n" +
                        " `used` BOOLEAN,\n" +
                        " PRIMARY KEY (`uuid`),\n" +
                        " UNIQUE INDEX `code` (`code`)\n" +
                        ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
                ps.executeQuery();
            } catch (Exception e) {
                ConsoleLog.danger("Erreur lors de l'exécution de initDatabase(): " + e);
            }
        }
    }