Skip to content

Commit

Permalink
add container id to function arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
Martin Wöginger committed Feb 3, 2025
1 parent 432de95 commit 11624d4
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
12 changes: 8 additions & 4 deletions lib/radiator/outline.ex
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ defmodule Radiator.Outline do

def order_child_nodes(%Node{} = node) do
node
|> NodeRepository.get_all_siblings()
|> NodeRepository.get_all_siblings(node.outline_node_container_id)
|> order_sibling_nodes()
end

Expand Down Expand Up @@ -483,7 +483,11 @@ defmodule Radiator.Outline do
node: result.update_content,
old_next: result.delete_node.deleted_node,
next: result.delete_node.updated_next_node,
children: NodeRepository.get_all_siblings(updated_prev_node),
children:
NodeRepository.get_all_siblings(
updated_prev_node,
updated_prev_node.outline_node_container_id
),
outline_node_container_id: updated_prev_node.outline_node_container_id
}}

Expand Down Expand Up @@ -529,7 +533,7 @@ defmodule Radiator.Outline do
node: result.update_content,
old_next: result.delete_next_node.deleted_node,
next: result.delete_next_node.updated_next_node,
children: NodeRepository.get_all_siblings(node),
children: NodeRepository.get_all_siblings(node, node.outline_node_container_id),
outline_node_container_id: node.outline_node_container_id
}}

Expand All @@ -555,7 +559,7 @@ defmodule Radiator.Outline do
NodeRepository.move_node_if(next_node, node.parent_id, get_node_id(prev_node))

# no tail recursion but we dont have too much levels in a tree
all_children = node |> NodeRepository.get_all_siblings()
all_children = node |> NodeRepository.get_all_siblings(node.outline_node_container_id)

recursive_deleted_children =
all_children
Expand Down
13 changes: 9 additions & 4 deletions lib/radiator/outline/node_repository.ex
Original file line number Diff line number Diff line change
Expand Up @@ -280,22 +280,27 @@ defmodule Radiator.Outline.NodeRepository do
TODO wrong name: sibling is "geschwister" in german
Returns all direct child nodes of a given node.
## Examples
iex> get_all_siblings(%Node{})
iex> get_all_siblings(%Node{}, "42")
[%Node{}, %Node{}]
"""
def get_all_siblings(nil) do
def get_all_siblings(nil, container_id) do
Node
|> where([n], is_nil(n.parent_id))
|> where([n], n.outline_node_container_id == ^container_id)
|> Repo.all()
end

def get_all_siblings(node) do
def get_all_siblings(node, container_id) do
Node
|> where([n], n.parent_id == ^node.uuid)
|> where([n], n.outline_node_container_id == ^container_id)
|> Repo.all()
end

def get_all_siblings(%Node{outline_node_container_id: container_id} = node),
do: get_all_siblings(node, container_id)

@doc """
get all children of a node. there is no limit of levels.
It basically calls `get_all_siblings` recursively and flattens the result.
Expand All @@ -304,7 +309,7 @@ defmodule Radiator.Outline.NodeRepository do
[%Node{}, %Node{}]
"""
def get_all_children(node) do
siblings = node |> get_all_siblings()
siblings = node |> get_all_siblings(node.outline_node_container_id)

children =
siblings
Expand Down

0 comments on commit 11624d4

Please sign in to comment.