Skip to content

Commit c614517

Browse files
committed
Update Tricks to using new DatabaseHandler system...
1 parent 802e0ea commit c614517

4 files changed

Lines changed: 25 additions & 80 deletions

File tree

build.gradle

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ dependencies {
7777
bootstrap("org.mangorage:mangobotbootstrap:1.0.84")
7878
launchtarget("org.mangorage:mangobotlaunchtarget:0.1.8")
7979

80-
plugin('org.mangorage:mangobot:12.0.128')
80+
plugin('org.mangorage:mangobot:12.0.130')
8181

8282
library('org.slf4j:slf4j-simple:2.0.13') // Use a recent version)
8383
library('org.luaj:luaj-jme:3.0.1')
@@ -87,16 +87,6 @@ dependencies {
8787

8888
library("com.google.zxing:core:3.5.4")
8989
library("com.google.zxing:javase:3.5.4")
90-
91-
// SQL Stuff
92-
library("org.hibernate.orm:hibernate-core:6.4.4.Final")
93-
library("jakarta.persistence:jakarta.persistence-api:3.1.0")
94-
library("jakarta.interceptor:jakarta.interceptor-api:2.1.0")
95-
library('jakarta.enterprise:jakarta.enterprise.cdi-api:4.0.1')
96-
97-
// SQL Driver
98-
library("com.mysql:mysql-connector-j:8.4.0")
99-
10090
}
10191

10292
test {

src/main/java/module-info.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
requires com.fasterxml.jackson.databind;
1010
requires org.slf4j.simple;
1111

12+
requires org.mangorage.bootstrap;
1213
requires org.mangorage.mangobotcore;
1314

1415
requires net.dv8tion.jda;
@@ -23,12 +24,7 @@
2324
requires java.desktop;
2425
requires luaj.jme;
2526
requires org.apache.logging.log4j;
26-
requires org.mangorage.bootstrap;
27-
requires com.google.zxing;
28-
requires com.google.zxing.javase;
2927
requires jakarta.persistence;
30-
requires org.hibernate.orm.core;
31-
requires opus.java.api;
3228

3329
opens org.mangorage.mangobotplugin;
3430

src/main/java/org/mangorage/mangobotplugin/commands/trick/Trick.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
import jakarta.persistence.Entity;
66
import jakarta.persistence.Id;
77
import jakarta.persistence.Table;
8-
import org.hibernate.annotations.Formula;
98
import org.mangorage.mangobotcore.api.util.data.FileName;
109
import org.mangorage.mangobotcore.api.util.data.IFileNameResolver;
10+
import org.mangorage.mangobotcore.api.util.data.IUniqueIdHolder;
1111

1212
import java.util.UUID;
1313

1414
@Entity
1515
@Table(name = "tricks")
16-
public final class Trick implements IFileNameResolver {
16+
public final class Trick implements IFileNameResolver, IUniqueIdHolder<UUID> {
1717

1818
@Id
1919
private UUID uuid;
@@ -142,4 +142,9 @@ public void use() {
142142
public FileName resolve() {
143143
return new FileName(guildID + "", trickID);
144144
}
145+
146+
@Override
147+
public UUID getId() {
148+
return uuid;
149+
}
145150
}

src/main/java/org/mangorage/mangobotplugin/commands/trick/TrickManager.java

Lines changed: 16 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,47 @@
11
package org.mangorage.mangobotplugin.commands.trick;
22

3-
import org.hibernate.Session;
4-
import org.hibernate.SessionFactory;
5-
import org.hibernate.Transaction;
6-
import org.hibernate.cfg.Configuration;
73
import org.mangorage.mangobotcore.api.util.data.DataHandler;
4+
import org.mangorage.mangobotcore.api.util.data.DatabaseHandler;
85
import org.mangorage.mangobotplugin.entrypoint.MangoBot;
96

107
import java.util.HashMap;
118
import java.util.List;
129
import java.util.Map;
10+
import java.util.UUID;
1311

1412
public final class TrickManager {
1513

16-
public static final DataHandler<Trick> TRICKS_DATA_HANDLER = DataHandler.create()
14+
private static final DataHandler<Trick> TRICKS_DATA_HANDLER = DataHandler.create()
1715
.path("data/tricksV2")
1816
.maxDepth(3)
1917
.build(Trick.class);
2018

19+
private static final DatabaseHandler<UUID, Trick> TRICKS_DATABASE_HANDLER = DatabaseHandler.create(
20+
MangoBot.BOT_DATABASE_URL.get(),
21+
MangoBot.BOT_DATABASE_USERNAME.get(),
22+
MangoBot.BOT_DATABASE_PASSWORD.get(),
23+
Trick.class
24+
);
25+
2126
private final Map<TrickKey, Trick> loadedTricks = new HashMap<>();
2227
private final MangoBot plugin;
23-
private final SessionFactory sessionFactory;
2428
private final boolean useDatabase;
2529

2630
public TrickManager(MangoBot plugin) {
2731
this.plugin = plugin;
28-
29-
String url = MangoBot.BOT_DATABASE_URL.get();
30-
String user = MangoBot.BOT_DATABASE_USERNAME.get();
31-
String pass = MangoBot.BOT_DATABASE_PASSWORD.get();
32-
3332
this.useDatabase = MangoBot.BOT_USE_DATABASE.get();
3433

3534
if (useDatabase) {
36-
this.sessionFactory = new Configuration()
37-
.setProperty("hibernate.connection.url", url)
38-
.setProperty("hibernate.connection.username", user)
39-
.setProperty("hibernate.connection.password", pass)
40-
41-
.setProperty("hibernate.connection.driver_class", "com.mysql.cj.jdbc.Driver")
42-
.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect")
43-
44-
.setProperty("hibernate.hbm2ddl.auto", "update")
45-
.setProperty("hibernate.show_sql", "false")
46-
47-
.addAnnotatedClass(Trick.class)
48-
.buildSessionFactory();
49-
5035
migrateFilesToDatabase();
51-
5236
loadFromDatabase();
5337
} else {
54-
this.sessionFactory = null;
5538
loadFromFiles();
5639
}
5740
}
5841

5942
private void migrateFilesToDatabase() {
60-
List<Trick> fileTricks = TRICKS_DATA_HANDLER.load(plugin.getPluginDirectory());
61-
62-
if (fileTricks.isEmpty()) return;
63-
64-
try (Session session = sessionFactory.openSession()) {
65-
Transaction tx = session.beginTransaction();
66-
67-
for (Trick trick : fileTricks) {
68-
session.merge(trick);
69-
TRICKS_DATA_HANDLER.delete(plugin.getPluginDirectory(), trick);
70-
}
71-
72-
tx.commit();
73-
}
43+
List<Trick> tricks = TRICKS_DATA_HANDLER.load(plugin.getPluginDirectory());
44+
TRICKS_DATABASE_HANDLER.migrateToDatabase(tricks);
7445
}
7546

7647
private void loadFromFiles() {
@@ -80,11 +51,8 @@ private void loadFromFiles() {
8051
}
8152

8253
private void loadFromDatabase() {
83-
try (Session session = sessionFactory.openSession()) {
84-
List<Trick> tricks = session.createQuery("from Trick", Trick.class).list();
85-
for (Trick trick : tricks) {
86-
loadedTricks.put(new TrickKey(trick.getTrickID(), trick.getGuildID()), trick);
87-
}
54+
for (Trick trick : TRICKS_DATABASE_HANDLER.loadEntitiesFromDatabase()) {
55+
loadedTricks.put(new TrickKey(trick.getTrickID(), trick.getGuildID()), trick);
8856
}
8957
}
9058

@@ -107,11 +75,7 @@ public Trick getTrickForGuildByName(long guildId, String name) {
10775

10876
public void saveTrick(Trick trick) {
10977
if (useDatabase) {
110-
try (Session session = sessionFactory.openSession()) {
111-
Transaction tx = session.beginTransaction();
112-
session.merge(trick);
113-
tx.commit();
114-
}
78+
TRICKS_DATABASE_HANDLER.saveEntity(trick);
11579
} else {
11680
TRICKS_DATA_HANDLER.save(plugin.getPluginDirectory(), trick);
11781
}
@@ -123,17 +87,7 @@ public boolean removeTrick(String trickID, long guildID) {
12387
if (removed == null) return false;
12488

12589
if (useDatabase) {
126-
try (Session session = sessionFactory.openSession()) {
127-
final var transaction = session.beginTransaction();
128-
session
129-
.createMutationQuery(
130-
"delete from Trick t where t.trickID = :trickId and t.guildID = :guildId"
131-
)
132-
.setParameter("trickId", trickID)
133-
.setParameter("guildId", guildID)
134-
.executeUpdate();
135-
transaction.commit();
136-
}
90+
TRICKS_DATABASE_HANDLER.removeEntity(removed);
13791
} else {
13892
TRICKS_DATA_HANDLER.delete(plugin.getPluginDirectory(), removed);
13993
}

0 commit comments

Comments
 (0)