Class: DatabaseCore::V1::QueryRunner
- Inherits:
-
Object
- Object
- DatabaseCore::V1::QueryRunner
- Defined in:
- lib/database-core/v1/query_runner.rb
Class Method Summary collapse
- .query(tables_query) ⇒ Object
- .setup_has_many(values, tables_query) ⇒ Object
- .setup_has_one(values, tables_query) ⇒ Object
- .tables_has_many(parents, query) ⇒ Object
- .tables_has_one(parents, query) ⇒ Object
- .tables_query(tables_query) ⇒ Object
- .values_remove_keys(values, query) ⇒ Object
Class Method Details
.query(tables_query) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/database-core/v1/query_runner.rb', line 5 def self.query tables_query tables_values = QueryRunner.tables_query tables_query tables_values.each do |table, values| query = tables_query[table] next if query.nil? QueryRunner.values_remove_keys values, query end tables_values end |
.setup_has_many(values, tables_query) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/database-core/v1/query_runner.rb', line 91 def self.setup_has_many values, tables_query return if values.empty? tables_query.each do |_, query| has_many_key = query["has_many_key"] next if has_many_key.nil? unless query["in_value"].nil? if query["in_value"].key? has_many_key query["in_value"][has_many_key] << values.map{ |value| value["id"] }.compact.uniq end end if query["in_value"].nil? query["in_value"] = {} query["in_value"][has_many_key] = values.map{ |value| value["id"] }.compact.uniq end end end |
.setup_has_one(values, tables_query) ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/database-core/v1/query_runner.rb', line 114 def self.setup_has_one values, tables_query return if values.empty? tables_query.each do |_, query| has_one_key = query["has_one_key"] next if has_one_key.nil? unless query["in_value"].nil? if query["in_value"].key? "id" query["in_value"]["id"] << values.map{ |value| value[has_one_key] }.compact.uniq end end if query["in_value"].nil? query["in_value"] = {} query["in_value"]["id"] = values.map{ |value| value[has_one_key] }.compact.uniq end end end |
.tables_has_many(parents, query) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/database-core/v1/query_runner.rb', line 39 def self.tables_has_many parents, query has_many = query["has_many"] return if has_many.nil? QueryRunner.setup_has_many parents, has_many tables_values = QueryRunner.tables_query has_many parents.each do |parent| tables_values.each do |table, values| query = has_many[table] next if query.nil? has_many_key = query["has_many_key"] next if has_many_key.nil? key_value = parent["id"] next if key_value.nil? values = values.deep_dup.select{ |value| value[has_many_key] == key_value } QueryRunner.values_remove_keys values, query parent[table] = values end end end |
.tables_has_one(parents, query) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/database-core/v1/query_runner.rb', line 65 def self.tables_has_one parents, query has_one = query["has_one"] return if has_one.nil? QueryRunner.setup_has_one parents, has_one tables_values = QueryRunner.tables_query has_one parents.each do |parent| tables_values.each do |table, values| query = has_one[table] next if query.nil? has_one_key = query["has_one_key"] next if has_one_key.nil? key_value = parent[has_one_key] next if key_value.nil? values = values.deep_dup.select{ |value| value["id"] == key_value } QueryRunner.values_remove_keys values, query parent[table] = values[0] end end end |
.tables_query(tables_query) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/database-core/v1/query_runner.rb', line 20 def self.tables_query tables_query tables_values = {} tables_query.each do |table, query| sql = Query.build table, query values = ActiveRecord::Base.connection.exec_query(sql).map(&:as_json) QueryRunner.tables_has_many values, query QueryRunner.tables_has_one values, query tables_values[table] = values end tables_values end |
.values_remove_keys(values, query) ⇒ Object
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/database-core/v1/query_runner.rb', line 137 def self.values_remove_keys values, query columns = query["columns"] return if columns.nil? keys = [] Query.build_keys keys, query keys.each do |key| unless columns.include? key values.each do |value| value.delete key end end end end |