feat(storage): mysql table creation
This commit is contained in:
parent
ac95f34ddb
commit
7b82126f40
2 changed files with 59 additions and 6 deletions
|
@ -3,8 +3,9 @@ package net.artelnatif.nicko.storage.sql;
|
||||||
import net.artelnatif.nicko.NickoBukkit;
|
import net.artelnatif.nicko.NickoBukkit;
|
||||||
import net.artelnatif.nicko.disguise.NickoProfile;
|
import net.artelnatif.nicko.disguise.NickoProfile;
|
||||||
import net.artelnatif.nicko.storage.Storage;
|
import net.artelnatif.nicko.storage.Storage;
|
||||||
import net.artelnatif.nicko.storage.StorageProvider;
|
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.SQLException;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@ -16,12 +17,18 @@ public class SQLStorage extends Storage {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StorageProvider getProvider() {
|
public SQLStorageProvider getProvider() {
|
||||||
return new SQLStorageProvider(instance);
|
return new SQLStorageProvider(instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void store(UUID uuid, NickoProfile profile) {
|
public void store(UUID uuid, NickoProfile profile) {
|
||||||
|
final Connection connection = getProvider().getConnection();
|
||||||
|
try {
|
||||||
|
connection.prepareStatement("");
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -4,9 +4,7 @@ import net.artelnatif.nicko.NickoBukkit;
|
||||||
import net.artelnatif.nicko.config.NickoConfiguration;
|
import net.artelnatif.nicko.config.NickoConfiguration;
|
||||||
import net.artelnatif.nicko.storage.StorageProvider;
|
import net.artelnatif.nicko.storage.StorageProvider;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.*;
|
||||||
import java.sql.DriverManager;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
|
|
||||||
public class SQLStorageProvider implements StorageProvider {
|
public class SQLStorageProvider implements StorageProvider {
|
||||||
private final NickoBukkit instance;
|
private final NickoBukkit instance;
|
||||||
|
@ -21,12 +19,24 @@ public class SQLStorageProvider implements StorageProvider {
|
||||||
try {
|
try {
|
||||||
final NickoConfiguration config = instance.getNickoConfig();
|
final NickoConfiguration config = instance.getNickoConfig();
|
||||||
connection = DriverManager.getConnection("jdbc://" + config.getStorageAddress(), config.getStorageUsername(), config.getStoragePassword());
|
connection = DriverManager.getConnection("jdbc://" + config.getStorageAddress(), config.getStorageUsername(), config.getStoragePassword());
|
||||||
return !connection.isClosed() && connection != null;
|
final boolean initialized = connection != null && !connection.isClosed();
|
||||||
|
|
||||||
|
if (initialized) {
|
||||||
|
if (!doesTableExist()) {
|
||||||
|
return createTables();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Connection getConnection() {
|
||||||
|
return connection;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean close() {
|
public boolean close() {
|
||||||
try {
|
try {
|
||||||
|
@ -36,4 +46,40 @@ public class SQLStorageProvider implements StorageProvider {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean createTables() {
|
||||||
|
final Connection connection = getConnection();
|
||||||
|
|
||||||
|
final String query = """
|
||||||
|
CREATE TABLE IF NOT EXISTS 'NICKO' (
|
||||||
|
uuid uuid NOT NULL,
|
||||||
|
name varchar(16) NOT NULL,
|
||||||
|
skin varchar(16) NOT NULL,
|
||||||
|
bungeecord boolean NOT NULL,
|
||||||
|
PRIMARY KEY (UUID)
|
||||||
|
)
|
||||||
|
""";
|
||||||
|
|
||||||
|
try {
|
||||||
|
final PreparedStatement statement = connection.prepareStatement(query);
|
||||||
|
ResultSet result = statement.executeQuery();
|
||||||
|
return result.next();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean doesTableExist() {
|
||||||
|
final Connection connection = getConnection();
|
||||||
|
|
||||||
|
final String query = "SELECT UUID FROM 'NICKO'";
|
||||||
|
|
||||||
|
try {
|
||||||
|
final PreparedStatement statement = connection.prepareStatement(query);
|
||||||
|
ResultSet result = statement.executeQuery();
|
||||||
|
return result.next();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue