Skip to content

Commit f69398a

Browse files
authored
GH-979 GH-1049 PostgreSQL Ready, Improve Location Persister. Wrapper -> Table. (#1050)
* Repair postgres for core * changed Block#getX for Block#getBlockX float -> int * wrapper -> table
1 parent f533904 commit f69398a

File tree

12 files changed

+77
-78
lines changed

12 files changed

+77
-78
lines changed
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
package com.eternalcode.core.database.wrapper;
1+
package com.eternalcode.core.database;
22

33
import com.eternalcode.commons.scheduler.Scheduler;
4-
import com.eternalcode.core.database.DatabaseManager;
54
import com.j256.ormlite.dao.Dao;
65
import panda.std.function.ThrowingFunction;
76

eternalcore-core/src/main/java/com/eternalcode/core/database/DatabaseManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public void connect() throws SQLException {
7373

7474
case POSTGRESQL -> {
7575
this.dataSource.setDriverClassName("org.postgresql.Driver");
76-
this.dataSource.setJdbcUrl("jdbc:postgresql://" + this.config.database.hostname + ":" + this.config.database.port + "/");
76+
this.dataSource.setJdbcUrl("jdbc:postgresql://" + this.config.database.hostname + ":" + this.config.database.port + "/" + this.config.database.database);
7777
}
7878

7979
default -> throw new SQLException("SQL type '" + databaseType + "' not found");

eternalcore-core/src/main/java/com/eternalcode/core/database/persister/LocationPersister.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public Object javaToSqlArg(FieldType fieldType, Object javaObject) {
3030
worldName = loc.getWorld().getName();
3131
}
3232

33-
return worldName + "/" + loc.getX() + "/" + loc.getY() + "/" + loc.getZ() + "/" + loc.getYaw() + "/" + loc.getPitch();
33+
return worldName + "/" + loc.getBlockX() + "/" + loc.getBlockY() + "/" + loc.getBlockZ() + "/" + loc.getYaw() + "/" + loc.getPitch();
3434
}
3535

3636
@Override

eternalcore-core/src/main/java/com/eternalcode/core/feature/automessage/AutoMessageRepositoryOrmLite.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.eternalcode.commons.scheduler.Scheduler;
44
import com.eternalcode.core.database.DatabaseManager;
5-
import com.eternalcode.core.database.wrapper.AbstractRepositoryOrmLite;
5+
import com.eternalcode.core.database.AbstractRepositoryOrmLite;
66
import com.eternalcode.core.injector.annotations.Inject;
77
import com.eternalcode.core.injector.annotations.component.Repository;
88
import com.j256.ormlite.stmt.Where;
@@ -30,17 +30,17 @@ public CompletableFuture<Set<UUID>> findReceivers(Set<UUID> onlineUniqueIds) {
3030
return CompletableFuture.completedFuture(onlineUniqueIds);
3131
}
3232

33-
CompletableFuture<List<AutoMessageTable>> wrapperList =
33+
CompletableFuture<List<AutoMessageTable>> tableList =
3434
this.action(
3535
AutoMessageTable.class, dao -> {
3636
Where<AutoMessageTable, Object> where = dao.queryBuilder().where();
3737
where.in("unique_id", onlineUniqueIds);
3838
return where.query();
3939
});
4040

41-
return wrapperList.thenApply(ignores -> {
41+
return tableList.thenApply(ignores -> {
4242
Set<UUID> ignoredIds = ignores.stream()
43-
.map(wrapper -> wrapper.uniqueId)
43+
.map(autoMessageTable -> autoMessageTable.uniqueId)
4444
.collect(Collectors.toSet());
4545

4646
return onlineUniqueIds.stream()
@@ -62,8 +62,8 @@ public CompletableFuture<Boolean> switchReceiving(UUID uniqueId) {
6262
.thenApply(result -> false);
6363
}
6464

65-
AutoMessageTable wrapper = optional.get();
66-
return this.delete(AutoMessageTable.class, wrapper).thenApply(state -> true);
65+
AutoMessageTable autoMessageTable = optional.get();
66+
return this.delete(AutoMessageTable.class, autoMessageTable).thenApply(state -> true);
6767
});
6868
}
6969
}

eternalcore-core/src/main/java/com/eternalcode/core/feature/home/database/HomeRepositoryOrmLite.java

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.eternalcode.commons.scheduler.Scheduler;
44
import com.eternalcode.core.database.DatabaseManager;
5-
import com.eternalcode.core.database.wrapper.AbstractRepositoryOrmLite;
5+
import com.eternalcode.core.database.AbstractRepositoryOrmLite;
66
import com.eternalcode.core.feature.home.Home;
77
import com.eternalcode.core.injector.annotations.Inject;
88
import com.eternalcode.core.injector.annotations.component.Repository;
@@ -25,50 +25,50 @@ class HomeRepositoryOrmLite extends AbstractRepositoryOrmLite implements HomeRep
2525
@Inject
2626
private HomeRepositoryOrmLite(DatabaseManager databaseManager, Scheduler scheduler) throws SQLException {
2727
super(databaseManager, scheduler);
28-
TableUtils.createTableIfNotExists(databaseManager.connectionSource(), HomeWrapper.class);
28+
TableUtils.createTableIfNotExists(databaseManager.connectionSource(), HomeTable.class);
2929
}
3030

3131
@Override
3232
public CompletableFuture<Optional<Home>> getHome(UUID playerUniqueId) {
33-
return this.select(HomeWrapper.class, playerUniqueId)
33+
return this.select(HomeTable.class, playerUniqueId)
3434
.thenApply(Optional::of)
35-
.thenApply(home -> home.map(HomeWrapper::toHome));
35+
.thenApply(home -> home.map(HomeTable::toHome));
3636
}
3737

3838
@Override
3939
public CompletableFuture<Optional<Home>> getHome(User user, String homeName) {
40-
return this.action(HomeWrapper.class, dao -> Optional.ofNullable(dao.queryBuilder()
40+
return this.action(HomeTable.class, dao -> Optional.ofNullable(dao.queryBuilder()
4141
.where()
4242
.eq(OWNER_COLUMN, user.getUniqueId())
4343
.and()
4444
.eq(NAME_COLUMN, homeName)
45-
.queryForFirst()).map(HomeWrapper::toHome));
45+
.queryForFirst()).map(HomeTable::toHome));
4646
}
4747

4848
@Override
4949
public CompletableFuture<Optional<Home>> getHome(UUID playerUniqueId, String homeName) {
50-
return this.action(HomeWrapper.class, dao -> Optional.ofNullable(dao.queryBuilder()
50+
return this.action(HomeTable.class, dao -> Optional.ofNullable(dao.queryBuilder()
5151
.where()
5252
.eq(OWNER_COLUMN, playerUniqueId)
5353
.and()
5454
.eq(NAME_COLUMN, homeName)
55-
.queryForFirst()).map(HomeWrapper::toHome));
55+
.queryForFirst()).map(HomeTable::toHome));
5656
}
5757

5858
@Override
5959
public CompletableFuture<Void> saveHome(Home home) {
60-
return this.save(HomeWrapper.class, HomeWrapper.from(home)).thenApply(result -> null);
60+
return this.save(HomeTable.class, HomeTable.from(home)).thenApply(result -> null);
6161
}
6262

6363
@Override
6464
public CompletableFuture<Integer> deleteHome(UUID playerUniqueId) {
65-
return this.deleteById(HomeWrapper.class, playerUniqueId);
65+
return this.deleteById(HomeTable.class, playerUniqueId);
6666
}
6767

6868
@Override
6969
public CompletableFuture<Integer> deleteHome(User user, String homeName) {
70-
return this.action(HomeWrapper.class, dao -> {
71-
DeleteBuilder<HomeWrapper, Object> builder = dao.deleteBuilder();
70+
return this.action(HomeTable.class, dao -> {
71+
DeleteBuilder<HomeTable, Object> builder = dao.deleteBuilder();
7272
builder.where()
7373
.eq(OWNER_COLUMN, user.getUniqueId())
7474
.and()
@@ -79,8 +79,8 @@ public CompletableFuture<Integer> deleteHome(User user, String homeName) {
7979

8080
@Override
8181
public CompletableFuture<Integer> deleteHome(UUID playerUniqueId, String homeName) {
82-
return this.action(HomeWrapper.class, dao -> {
83-
DeleteBuilder<HomeWrapper, Object> builder = dao.deleteBuilder();
82+
return this.action(HomeTable.class, dao -> {
83+
DeleteBuilder<HomeTable, Object> builder = dao.deleteBuilder();
8484
builder.where()
8585
.eq(OWNER_COLUMN, playerUniqueId)
8686
.and()
@@ -91,27 +91,27 @@ public CompletableFuture<Integer> deleteHome(UUID playerUniqueId, String homeNam
9191

9292
@Override
9393
public CompletableFuture<Set<Home>> getHomes() {
94-
return this.selectAll(HomeWrapper.class)
95-
.thenApply(homeOrmLites -> homeOrmLites.stream().map(HomeWrapper::toHome).collect(Collectors.toSet()));
94+
return this.selectAll(HomeTable.class)
95+
.thenApply(homeOrmLites -> homeOrmLites.stream().map(HomeTable::toHome).collect(Collectors.toSet()));
9696
}
9797

9898
@Override
9999
public CompletableFuture<Set<Home>> getHomes(User user) {
100-
return this.action(HomeWrapper.class, dao -> dao.queryBuilder()
100+
return this.action(HomeTable.class, dao -> dao.queryBuilder()
101101
.where()
102102
.eq(OWNER_COLUMN, user.getUniqueId())
103103
.query()).thenApply(homes -> homes.stream()
104-
.map(HomeWrapper::toHome)
104+
.map(HomeTable::toHome)
105105
.collect(Collectors.toSet()));
106106
}
107107

108108
@Override
109109
public CompletableFuture<Set<Home>> getHomes(UUID playerUniqueId) {
110-
return this.action(HomeWrapper.class, dao -> dao.queryBuilder()
110+
return this.action(HomeTable.class, dao -> dao.queryBuilder()
111111
.where()
112112
.eq(OWNER_COLUMN, playerUniqueId)
113113
.query()).thenApply(homes -> homes.stream()
114-
.map(HomeWrapper::toHome)
114+
.map(HomeTable::toHome)
115115
.collect(Collectors.toSet()));
116116
}
117117
}

eternalcore-core/src/main/java/com/eternalcode/core/feature/home/database/HomeWrapper.java renamed to eternalcore-core/src/main/java/com/eternalcode/core/feature/home/database/HomeTable.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import org.bukkit.Location;
1010

1111
@DatabaseTable(tableName = "eternal_core_homes")
12-
class HomeWrapper {
12+
class HomeTable {
1313

1414
@DatabaseField(columnName = "id", id = true)
1515
private UUID uuid;
@@ -23,9 +23,9 @@ class HomeWrapper {
2323
@DatabaseField(columnName = "location", persisterClass = LocationPersister.class)
2424
private Location location;
2525

26-
HomeWrapper() {}
26+
HomeTable() {}
2727

28-
HomeWrapper(UUID uuid, UUID owner, String name, Location location) {
28+
HomeTable(UUID uuid, UUID owner, String name, Location location) {
2929
this.uuid = uuid;
3030
this.owner = owner;
3131
this.name = name;
@@ -36,8 +36,8 @@ Home toHome() {
3636
return new HomeImpl(this.uuid, this.owner, this.name, this.location);
3737
}
3838

39-
static HomeWrapper from(Home home) {
40-
return new HomeWrapper(home.getUuid(), home.getOwner(), home.getName(), home.getLocation());
39+
static HomeTable from(Home home) {
40+
return new HomeTable(home.getUuid(), home.getOwner(), home.getName(), home.getLocation());
4141
}
4242
}
4343

eternalcore-core/src/main/java/com/eternalcode/core/feature/ignore/IgnoreRepositoryOrmLite.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.eternalcode.commons.scheduler.Scheduler;
44
import com.eternalcode.core.database.DatabaseManager;
5-
import com.eternalcode.core.database.wrapper.AbstractRepositoryOrmLite;
5+
import com.eternalcode.core.database.AbstractRepositoryOrmLite;
66
import com.eternalcode.core.injector.annotations.Inject;
77
import com.eternalcode.core.injector.annotations.component.Repository;
88
import com.google.common.cache.CacheBuilder;
@@ -29,19 +29,19 @@ class IgnoreRepositoryOrmLite extends AbstractRepositoryOrmLite implements Ignor
2929

3030
private static final UUID IGNORE_ALL = UUID.nameUUIDFromBytes("*".getBytes());
3131

32-
private final Dao<IgnoreWrapper, Long> cachedDao;
32+
private final Dao<IgnoreTable, Long> cachedDao;
3333
private final LoadingCache<UUID, Set<UUID>> ignores;
3434

3535
@Inject
3636
private IgnoreRepositoryOrmLite(DatabaseManager databaseManager, Scheduler scheduler) throws SQLException {
3737
super(databaseManager, scheduler);
38-
this.cachedDao = databaseManager.getDao(IgnoreWrapper.class);
38+
this.cachedDao = databaseManager.getDao(IgnoreTable.class);
3939

4040
this.ignores = CacheBuilder.newBuilder()
4141
.expireAfterAccess(Duration.ofMinutes(15))
4242
.refreshAfterWrite(Duration.ofMinutes(3))
4343
.build(new IgnoreLoader());
44-
TableUtils.createTableIfNotExists(databaseManager.connectionSource(), IgnoreWrapper.class);
44+
TableUtils.createTableIfNotExists(databaseManager.connectionSource(), IgnoreTable.class);
4545
}
4646

4747
@Override
@@ -65,7 +65,7 @@ public CompletableFuture<Void> ignore(UUID by, UUID target) {
6565
Set<UUID> uuids = this.ignores.get(by);
6666

6767
if (!uuids.contains(target)) {
68-
this.save(IgnoreWrapper.class, new IgnoreWrapper(by, target))
68+
this.save(IgnoreTable.class, new IgnoreTable(by, target))
6969
.thenRun(() -> this.ignores.refresh(by));
7070
}
7171
}
@@ -82,8 +82,8 @@ public CompletableFuture<Void> ignoreAll(UUID by) {
8282

8383
@Override
8484
public CompletableFuture<Void> unIgnore(UUID by, UUID target) {
85-
return this.action(IgnoreWrapper.class, dao -> {
86-
DeleteBuilder<IgnoreWrapper, Object> builder = dao.deleteBuilder();
85+
return this.action(IgnoreTable.class, dao -> {
86+
DeleteBuilder<IgnoreTable, Object> builder = dao.deleteBuilder();
8787

8888
builder.where()
8989
.eq("player_id", by)
@@ -97,8 +97,8 @@ public CompletableFuture<Void> unIgnore(UUID by, UUID target) {
9797

9898
@Override
9999
public CompletableFuture<Void> unIgnoreAll(UUID by) {
100-
return this.action(IgnoreWrapper.class, dao -> {
101-
DeleteBuilder<IgnoreWrapper, Object> builder = dao.deleteBuilder();
100+
return this.action(IgnoreTable.class, dao -> {
101+
DeleteBuilder<IgnoreTable, Object> builder = dao.deleteBuilder();
102102

103103
builder.where()
104104
.eq("player_id", by);
@@ -111,14 +111,14 @@ public CompletableFuture<Void> unIgnoreAll(UUID by) {
111111
@ApiStatus.Internal
112112
@Override
113113
public CompletableFuture<Void> purgeAll() {
114-
return this.deleteAll(IgnoreWrapper.class)
114+
return this.deleteAll(IgnoreTable.class)
115115
.thenRun(this.ignores::invalidateAll);
116116
}
117117

118118
@DatabaseTable(tableName = "eternal_core_ignores")
119-
private static class IgnoreWrapper {
119+
private static class IgnoreTable {
120120

121-
@DatabaseField(generatedId = true)
121+
@DatabaseField(id = true)
122122
Long id;
123123

124124
@DatabaseField(columnName = "player_id", uniqueCombo = true)
@@ -127,9 +127,9 @@ private static class IgnoreWrapper {
127127
@DatabaseField(columnName = "ignored_id", uniqueCombo = true)
128128
UUID ignoredUuid;
129129

130-
IgnoreWrapper() {}
130+
IgnoreTable() {}
131131

132-
IgnoreWrapper(UUID playerUuid, UUID ignoredUuid) {
132+
IgnoreTable(UUID playerUuid, UUID ignoredUuid) {
133133
this.playerUuid = playerUuid;
134134
this.ignoredUuid = ignoredUuid;
135135
}
@@ -143,7 +143,7 @@ private class IgnoreLoader extends CacheLoader<UUID, Set<UUID>> {
143143
.where().eq("player_id", key)
144144
.query()
145145
.stream()
146-
.map(ignoreWrapper -> ignoreWrapper.ignoredUuid)
146+
.map(ignoreTable -> ignoreTable.ignoredUuid)
147147
.collect(Collectors.toSet());
148148
}
149149
}

eternalcore-core/src/main/java/com/eternalcode/core/feature/jail/PrisonerRepositoryOrmLite.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.eternalcode.commons.scheduler.Scheduler;
44
import com.eternalcode.core.database.DatabaseManager;
5-
import com.eternalcode.core.database.wrapper.AbstractRepositoryOrmLite;
5+
import com.eternalcode.core.database.AbstractRepositoryOrmLite;
66
import com.eternalcode.core.injector.annotations.Inject;
77
import com.eternalcode.core.injector.annotations.component.Repository;
88

@@ -22,49 +22,49 @@ class PrisonerRepositoryOrmLite extends AbstractRepositoryOrmLite implements Pri
2222
@Inject
2323
private PrisonerRepositoryOrmLite(DatabaseManager databaseManager, Scheduler scheduler) throws SQLException {
2424
super(databaseManager, scheduler);
25-
TableUtils.createTableIfNotExists(databaseManager.connectionSource(), PrisonerWrapper.class);
25+
TableUtils.createTableIfNotExists(databaseManager.connectionSource(), PrisonerTable.class);
2626
}
2727

2828
@Override
2929
public CompletableFuture<Optional<JailedPlayer>> getPrisoner(UUID uuid) {
30-
return this.selectSafe(PrisonerWrapper.class, uuid)
31-
.thenApply(optional -> optional.map(prisonerWrapper -> prisonerWrapper.toPrisoner()));
30+
return this.selectSafe(PrisonerTable.class, uuid)
31+
.thenApply(optional -> optional.map(prisonerTable -> prisonerTable.toPrisoner()));
3232
}
3333

3434
@Override
3535
public CompletableFuture<Set<JailedPlayer>> getPrisoners() {
36-
return this.selectAll(PrisonerWrapper.class)
37-
.thenApply(prisonerWrappers -> prisonerWrappers.stream()
38-
.map(PrisonerWrapper::toPrisoner)
36+
return this.selectAll(PrisonerTable.class)
37+
.thenApply(prisonerTables -> prisonerTables.stream()
38+
.map(PrisonerTable::toPrisoner)
3939
.collect(Collectors.toSet()));
4040
}
4141

4242
@Override
4343
public void deletePrisoner(UUID uuid) {
44-
this.deleteById(PrisonerWrapper.class, uuid);
44+
this.deleteById(PrisonerTable.class, uuid);
4545
}
4646

4747
@Override
4848
public void editPrisoner(JailedPlayer jailedPlayer) {
49-
this.save(PrisonerWrapper.class, PrisonerWrapper.from(jailedPlayer));
49+
this.save(PrisonerTable.class, PrisonerTable.from(jailedPlayer));
5050
}
5151

5252
@Override
5353
public void deleteAllPrisoners() {
54-
this.delete(PrisonerWrapper.class, new PrisonerWrapper());
54+
this.delete(PrisonerTable.class, new PrisonerTable());
5555
}
5656

5757
@Override
5858
public CompletableFuture<List<JailedPlayer>> getAllPrisoners() {
59-
return this.selectAll(PrisonerWrapper.class)
60-
.thenApply(prisonerWrappers -> prisonerWrappers.stream()
61-
.map(PrisonerWrapper::toPrisoner)
59+
return this.selectAll(PrisonerTable.class)
60+
.thenApply(prisonerTables -> prisonerTables.stream()
61+
.map(PrisonerTable::toPrisoner)
6262
.toList());
6363
}
6464

6565
@Override
6666
public void savePrisoner(JailedPlayer jailedPlayer) {
67-
this.save(PrisonerWrapper.class, PrisonerWrapper.from(jailedPlayer));
67+
this.save(PrisonerTable.class, PrisonerTable.from(jailedPlayer));
6868
}
6969

7070
}

0 commit comments

Comments
 (0)