Class: Exwiw::QueryAst::JoinClause

Inherits:
Object
  • Object
show all
Defined in:
lib/exwiw/query_ast.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_table_name:, foreign_key:, join_table_name:, primary_key:, where_clauses: [], base_where_clauses: []) ⇒ JoinClause

Returns a new instance of JoinClause.



13
14
15
16
17
18
19
20
# File 'lib/exwiw/query_ast.rb', line 13

def initialize(base_table_name:, foreign_key:, join_table_name:, primary_key:, where_clauses: [], base_where_clauses: [])
  @base_table_name = base_table_name
  @foreign_key = foreign_key
  @join_table_name = join_table_name
  @primary_key = primary_key
  @where_clauses = where_clauses
  @base_where_clauses = base_where_clauses
end

Instance Attribute Details

#base_table_nameObject (readonly)

‘where_clauses` はこの join の join_table_name (= 結合先テーブル) に対してコンパイルされる。一方 `base_where_clauses` は base_table_name (= 結合元テーブル) に対してコンパイルされる。後者は、結合元テーブルが結合先へpolymorphic belongs_to していて型カラム (foreign_type) が結合元テーブル側に存在するケースのために使う。



11
12
13
# File 'lib/exwiw/query_ast.rb', line 11

def base_table_name
  @base_table_name
end

#base_where_clausesObject (readonly)

‘where_clauses` はこの join の join_table_name (= 結合先テーブル) に対してコンパイルされる。一方 `base_where_clauses` は base_table_name (= 結合元テーブル) に対してコンパイルされる。後者は、結合元テーブルが結合先へpolymorphic belongs_to していて型カラム (foreign_type) が結合元テーブル側に存在するケースのために使う。



11
12
13
# File 'lib/exwiw/query_ast.rb', line 11

def base_where_clauses
  @base_where_clauses
end

#foreign_keyObject (readonly)

‘where_clauses` はこの join の join_table_name (= 結合先テーブル) に対してコンパイルされる。一方 `base_where_clauses` は base_table_name (= 結合元テーブル) に対してコンパイルされる。後者は、結合元テーブルが結合先へpolymorphic belongs_to していて型カラム (foreign_type) が結合元テーブル側に存在するケースのために使う。



11
12
13
# File 'lib/exwiw/query_ast.rb', line 11

def foreign_key
  @foreign_key
end

#join_table_nameObject (readonly)

‘where_clauses` はこの join の join_table_name (= 結合先テーブル) に対してコンパイルされる。一方 `base_where_clauses` は base_table_name (= 結合元テーブル) に対してコンパイルされる。後者は、結合元テーブルが結合先へpolymorphic belongs_to していて型カラム (foreign_type) が結合元テーブル側に存在するケースのために使う。



11
12
13
# File 'lib/exwiw/query_ast.rb', line 11

def join_table_name
  @join_table_name
end

#primary_keyObject (readonly)

‘where_clauses` はこの join の join_table_name (= 結合先テーブル) に対してコンパイルされる。一方 `base_where_clauses` は base_table_name (= 結合元テーブル) に対してコンパイルされる。後者は、結合元テーブルが結合先へpolymorphic belongs_to していて型カラム (foreign_type) が結合元テーブル側に存在するケースのために使う。



11
12
13
# File 'lib/exwiw/query_ast.rb', line 11

def primary_key
  @primary_key
end

#where_clausesObject (readonly)

‘where_clauses` はこの join の join_table_name (= 結合先テーブル) に対してコンパイルされる。一方 `base_where_clauses` は base_table_name (= 結合元テーブル) に対してコンパイルされる。後者は、結合元テーブルが結合先へpolymorphic belongs_to していて型カラム (foreign_type) が結合元テーブル側に存在するケースのために使う。



11
12
13
# File 'lib/exwiw/query_ast.rb', line 11

def where_clauses
  @where_clauses
end

Instance Method Details

#to_hObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/exwiw/query_ast.rb', line 22

def to_h
  hash = {
    base_table_name: base_table_name,
    foreign_key: foreign_key,
    join_table_name: join_table_name,
    primary_key: primary_key,
  }
  if where_clauses.size.positive?
    hash[:where_clauses] = where_clauses.map { |wc| wc.is_a?(String) ? wc : wc.to_h }
  end
  if base_where_clauses.size.positive?
    hash[:base_where_clauses] = base_where_clauses.map { |wc| wc.is_a?(String) ? wc : wc.to_h }
  end
  hash
end