diff --git a/CommonCore/SQL/src/de/steamwar/sql/NodeMember.kt b/CommonCore/SQL/src/de/steamwar/sql/NodeMember.kt index 9c8c31b4..cf6d951e 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/NodeMember.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/NodeMember.kt @@ -55,6 +55,17 @@ class NodeMember(id: EntityID) : CompositeEntity(id) { getNodeMember(node, member) ?: throw IllegalStateException("NodeMember not created") } + @JvmStatic + fun createNodeMember(node: Int, member: Int, parent: SchematicNode): NodeMember = useDb { + if (!parent.isDir()) throw IllegalStateException("Parent must be a directory") + NodeMemberTable.insertIgnore { + it[this.node] = EntityID(node, SchematicNodeTable) + it[this.userId] = EntityID(member, SteamwarUserTable) + it[NodeMemberTable.parentNode] = parent.getId() + } + getNodeMember(node, member) ?: throw IllegalStateException("NodeMember not created") + } + @JvmStatic fun createNodeMember(node: Int, member: SteamwarUser) = createNodeMember(node, member.id.value) diff --git a/CommonCore/SQL/src/de/steamwar/sql/SchematicNode.kt b/CommonCore/SQL/src/de/steamwar/sql/SchematicNode.kt index 7117a4b0..96fd0901 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/SchematicNode.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/SchematicNode.kt @@ -314,7 +314,7 @@ class SchematicNode(id: EntityID) : IntEntity(id) { parentNodeId = value?.let { EntityID(it, SchematicNodeTable) } } val parentNode: SchematicNode? - get() = parent?.let { findById(it) } + get() = useDb { parent?.let { findById(it) } } val optionalParent: Optional get() = Optional.ofNullable(parent) var lastUpdate by SchematicNodeTable.lastUpdate.transform({ it.toInstant() }, { Timestamp.from(it) }) diff --git a/LobbySystem/src/de/steamwar/lobby/special/advent/Present.java b/LobbySystem/src/de/steamwar/lobby/special/advent/Present.java index 0bbb7a86..4874800d 100644 --- a/LobbySystem/src/de/steamwar/lobby/special/advent/Present.java +++ b/LobbySystem/src/de/steamwar/lobby/special/advent/Present.java @@ -97,9 +97,10 @@ public class Present { folder = null; } } - NodeMember nodeMember = NodeMember.createNodeMember(schematicId, user.getId()); if (folder != null) { - nodeMember.setParentId(folder.getId()); + NodeMember.createNodeMember(schematicId, user.getId(), folder); + } else { + NodeMember.createNodeMember(schematicId, user.getId()); } LobbySystem.getMessage().send("ADVENT_CALENDAR_OPEN", player, node.getName()); player.playSound(location, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1);