From 42601a11c2ba2cda2849c09455e492a8cb64b083 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Mon, 4 Apr 2022 11:28:44 +0200 Subject: [PATCH] Added database tables --- .../com/alttd/database/DatabaseTables.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/main/java/com/alttd/database/DatabaseTables.java diff --git a/src/main/java/com/alttd/database/DatabaseTables.java b/src/main/java/com/alttd/database/DatabaseTables.java new file mode 100644 index 0000000..f1fc5ed --- /dev/null +++ b/src/main/java/com/alttd/database/DatabaseTables.java @@ -0,0 +1,56 @@ +package com.alttd.database; + +import com.alttd.util.Logger; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.sql.Connection; +import java.sql.SQLException; + +public class DatabaseTables { + + private Connection connection; + + protected DatabaseTables (Connection connection) { + this.connection = connection; + init(DatabaseTables.class, this); + } + + private void init(Class clazz, Object instance) { + for (Method method : clazz.getDeclaredMethods()) { + if (Modifier.isPrivate(method.getModifiers())) { + if (method.getParameterTypes().length == 0 && method.getReturnType() == Void.TYPE && method.getName().contains("Table")) { + try { + method.setAccessible(true); + method.invoke(instance); + } catch (InvocationTargetException ex) { + throw new RuntimeException(ex.getCause()); + } catch (Exception ex) { + Logger.severe("Error invoking %.", method.toString()); + ex.printStackTrace(); + } + } + } + } + } + + private void createPollsTable() { + try { + String sql = "CREATE TABLE IF NOT EXISTS polls(" + + "poll_id BIGINT NOT NULL, " + + "channel_id BIGINT NOT NULL, " + + "guild_id BIGINT NOT NULL, " + + "active BIT DEFAULT b'0', " + + "poll_title VARCHAR(256) NOT NULL, " + + "embed_type VARCHAR(32) DEFAULT 'ABSTRACT_EMBED', " + + "PRIMARY KEY (UUID, villager_type)" + + ")"; + connection.prepareStatement(sql).executeUpdate(); + } catch (SQLException e) { + Logger.sql(e); + Logger.severe("Unable to create polls table, shutting down..."); + } + } + +}