Module: HasManyWithSet::Queries

Defined in:
lib/has-many-with-set/queries.rb

Class Method Summary collapse

Class Method Details

.build_find_empty_set_query(set_table_name, set_items_table_name) ⇒ Object



3
4
5
6
7
# File 'lib/has-many-with-set/queries.rb', line 3

def self.build_find_empty_set_query(set_table_name, set_items_table_name)
  "select #{ set_table_name }.id from #{ set_table_name }
   where not exists (select null from #{ set_items_table_name }
                     where #{ set_items_table_name }.#{ set_table_name.singularize }_id = #{ set_table_name }.id);"
end

.build_find_parents_query(parent_table_name, child_table_name, set_table_name, set_items_table_name) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/has-many-with-set/queries.rb', line 22

def self.build_find_parents_query(parent_table_name, child_table_name, set_table_name, set_items_table_name)
 "select #{ parent_table_name }.* from #{ child_table_name }
    join #{ set_items_table_name } on #{ child_table_name }.id = #{ set_items_table_name }.#{ child_table_name.singularize }_id
    join #{ parent_table_name } on #{ parent_table_name }.#{ set_table_name.singularize }_id =
      #{ set_items_table_name }.#{ set_table_name.singularize}_id
  where #{ child_table_name }.id = ?;"
end

.build_find_set_query(set_table_name, set_items_table_name, child_table_name) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/has-many-with-set/queries.rb', line 9

def self.build_find_set_query(set_table_name, set_items_table_name, child_table_name)
  "select #{ set_table_name }.id from #{ set_items_table_name }
     join #{ set_table_name } on
       #{ set_table_name }.id = #{ set_items_table_name }.#{ set_table_name.singularize }_id
   where
     #{set_items_table_name }.#{ child_table_name.singularize }_id IN (?)
     and (select count(*) from #{ set_items_table_name } c
          where c.#{ set_table_name.singularize }_id =
                #{ set_items_table_name }.#{ set_table_name.singularize }_id) = ?
   group by #{ set_table_name }.id
   having count(*) = ?;"
end