Skip to content

Commit 6512e39

Browse files
committed
Added a JDA Permission Node Manager
1 parent b3454f1 commit 6512e39

3 files changed

Lines changed: 39 additions & 6 deletions

File tree

src/main/java/module-info.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
import org.mangorage.bootstrap.api.launch.ILaunchTargetEntrypoint;
22
import org.mangorage.bootstrap.api.transformer.IClassTransformer;
3-
import org.mangorage.mangobotcore.api.plugin.v1.Plugin;
4-
import org.mangorage.mangobotcore.api.plugin.v1.IPluginInfoGetter;
5-
import org.mangorage.mangobotcore.api.plugin.MangoBotCore;
63
import org.mangorage.mangobotcore.internal.entrypoint.MangoBotEntrypoint;
74
import org.mangorage.mangobotcore.internal.transformer.ExampleTransformer;
85

@@ -28,6 +25,9 @@
2825
exports org.mangorage.mangobotcore.api.jda.command.v2;
2926
exports org.mangorage.mangobotcore.api.jda.event.v1;
3027

28+
// JDA Permission API
29+
exports org.mangorage.mangobotcore.api.jda.permission.v1;
30+
3131
// Command API
3232
exports org.mangorage.mangobotcore.api.command.v1;
3333
exports org.mangorage.mangobotcore.api.command.v1.argument;
@@ -57,7 +57,7 @@
5757
opens org.mangorage.mangobotcore.internal.entrypoint to org.mangorage.bootstrap; // Opens it to bootstrap
5858

5959
opens org.mangorage.mangobotcore.internal.plugin to com.google.gson; // GSON
60-
opens org.mangorage.mangobotcore.internal.plugin.dependency to com.google.gson; // GSON
60+
opens org.mangorage.mangobotcore.internal.plugin.dependency to com.google.gson;
6161

6262

6363
provides Plugin with MangoBotCore;
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.mangorage.mangobotcore.api.jda.permission.v1;
2+
3+
import org.mangorage.mangobotcore.api.util.data.DatabaseHandler;
4+
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
8+
public final class JDAPermissionManager {
9+
10+
public static JDAPermissionManager create(DatabaseHandler<String, JDAPermissionNode> databaseHandler) {
11+
return new JDAPermissionManager(databaseHandler);
12+
}
13+
14+
private final DatabaseHandler<String, JDAPermissionNode> databaseHandler;
15+
16+
private final Map<String, JDAPermissionNode> permissionNodes = new HashMap<>();
17+
18+
JDAPermissionManager(DatabaseHandler<String, JDAPermissionNode> databaseHandler) {
19+
this.databaseHandler = databaseHandler;
20+
databaseHandler.loadEntitiesFromDatabase().forEach(node -> permissionNodes.put(node.getId(), node));
21+
}
22+
23+
public JDAPermissionNode getPermissionNode(String id) {
24+
return permissionNodes.computeIfAbsent(id, JDAPermissionNode::create);
25+
}
26+
}

src/main/java/org/mangorage/mangobotcore/api/jda/command/v2/JDAPermissionNode.java renamed to src/main/java/org/mangorage/mangobotcore/api/jda/permission/v1/JDAPermissionNode.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
1-
package org.mangorage.mangobotcore.api.jda.command.v2;
1+
package org.mangorage.mangobotcore.api.jda.permission.v1;
22

3+
import jakarta.persistence.Entity;
4+
import jakarta.persistence.Id;
5+
import jakarta.persistence.Table;
36
import net.dv8tion.jda.api.Permission;
47
import net.dv8tion.jda.api.entities.Member;
58
import net.dv8tion.jda.api.entities.Message;
69
import net.dv8tion.jda.api.entities.Role;
710
import org.mangorage.mangobotcore.api.command.v1.CommandContext;
811
import org.mangorage.mangobotcore.api.command.v1.PermissionNode;
12+
import org.mangorage.mangobotcore.api.util.data.IUniqueIdHolder;
913

1014
import java.util.ArrayList;
1115
import java.util.List;
1216

13-
public final class JDAPermissionNode implements PermissionNode<Message> {
17+
@Entity
18+
@Table(name = "jda_permission_nodes")
19+
public final class JDAPermissionNode implements PermissionNode<Message>, IUniqueIdHolder<String> {
1420

1521
record GuildUser(Long guildId, Long userId) {}
1622
record GuildRole(Long guildId, Long roleId) {}
@@ -19,6 +25,7 @@ public static JDAPermissionNode create(String id) {
1925
return new JDAPermissionNode(id);
2026
}
2127

28+
@Id
2229
private final String id;
2330
private final List<GuildRole> roleIds = new ArrayList<>();
2431
private final List<GuildUser> userIds = new ArrayList<>();

0 commit comments

Comments
 (0)