recursifier 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/recursifier/version.rb +1 -1
- data/lib/recursifier.rb +3 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7222c9df26b3ed88f80291cc7a6572abfca30bd84924bf8c32f399a09bf0aa71
|
4
|
+
data.tar.gz: c5cdcd742ceee2def0c7c1b199fbd7ad9186c3632d3ad194fa670ff1311628f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d4accda36465e79b607b38da901ae05e13e82bc87273540896b233074395aafd55315493990f551ecfc14205efc6d773f1c163ac3d623544b2ba1399f53a516
|
7
|
+
data.tar.gz: c834aaa17bc2279df4b9cd324cbdd2d1a31a1704a900353aedc990351059ded8aac01e26adbe3baf4cb7eecd4406661324b5c361a479967abacc9d20b2cb0ddc
|
data/lib/recursifier/version.rb
CHANGED
data/lib/recursifier.rb
CHANGED
@@ -23,6 +23,8 @@ module Recursifier
|
|
23
23
|
filter_conditions = filters.map { |key, value| "#{key} = '#{value}'" }.join(' AND ')
|
24
24
|
|
25
25
|
# Convert selected_columns array into comma-separated column names
|
26
|
+
selected_columns_sub_str = selected_columns.empty? ? '*' : selected_columns.map { |col| "t.#{col}" }.join(', ')
|
27
|
+
|
26
28
|
selected_columns_str = selected_columns.empty? ? '*' : selected_columns.join(', ')
|
27
29
|
|
28
30
|
# Constructing the recursive query with additional filters and selected columns
|
@@ -30,7 +32,7 @@ module Recursifier
|
|
30
32
|
WITH RECURSIVE hierarchy AS (
|
31
33
|
SELECT #{selected_columns_str}, 1 AS depth FROM #{table_name} WHERE #{parent_matching_column} = #{start_id} #{filter_conditions}
|
32
34
|
UNION ALL
|
33
|
-
SELECT #{
|
35
|
+
SELECT #{selected_columns_sub_str}, h.depth + 1 FROM #{table_name} t
|
34
36
|
JOIN hierarchy h ON t.#{sub_matching_column} = h.#{parent_matching_column} WHERE h.depth < #{max_depth}
|
35
37
|
)
|
36
38
|
SELECT #{selected_columns_str} FROM hierarchy;
|