smql 0.0.4.7 → 0.0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/VERSION +1 -1
  2. data/lib/smql_to_ar/query_builder.rb +35 -11
  3. metadata +3 -3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4.7
1
+ 0.0.4.8
@@ -32,13 +32,36 @@ class SmqlToAR
32
32
  end
33
33
 
34
34
  class Aliases < Hash
35
- def self.new prefix, *a, &e
36
- e ||= lambda do |h, k|
37
- j = Array.wrap( k).compact
38
- h[k] = h.key?(j) ? h[j] : "#{prefix},#{j.collect( &:to_alias).join( ',')}"
39
- end
35
+ attr_accessor :counter, :prefix
36
+
37
+ def initialize prefix, *a, &e
38
+ @counter, @prefix = 0, prefix || 'smql'
40
39
  super *a, &e
41
40
  end
41
+
42
+ def format name
43
+ pre, suf = name.split( ',', 2)
44
+ return name unless suf
45
+ pre += ",#{@counter += 1},"
46
+ l = 60-pre.length
47
+ n = suf[(suf.length<=l ? 0 : -l)..-1]
48
+ n == suf ? pre+n : "#{pre},,,#{n}"
49
+ end
50
+
51
+ def name n
52
+ n.collect( &:to_alias).join ','
53
+ end
54
+
55
+ def [] k
56
+ n = name k
57
+ v = super n
58
+ v = self[k] = format( "#{prefix},#{n}") unless v
59
+ v
60
+ end
61
+
62
+ def []= k, v
63
+ super name( k), v
64
+ end
42
65
  end
43
66
 
44
67
  attr_reader :table_alias, :model, :table_model, :base_table, :_where, :_select, :_wobs, :_joins, :prefix, :_vid
@@ -48,7 +71,7 @@ class SmqlToAR
48
71
  @prefix = "smql"
49
72
  @logger = SmqlToAR.logger
50
73
  @table_alias = Aliases.new @prefix
51
- @_vid, @_where, @_wobs, @model, @quoter = 0, SmqlToAR::And[], {}, model, model.connection
74
+ @_vid, @_where, @_wobs, @model, @quote = 0, SmqlToAR::And[], {}, model, model.connection
52
75
  @base_table = [Column::Col.new( model.table_name)]
53
76
  @table_alias[ @base_table] = @base_table.first
54
77
  t = quote_table_name @base_table.first.col
@@ -77,7 +100,7 @@ class SmqlToAR
77
100
  end
78
101
 
79
102
  def quote_column_name name
80
- @quoter.quote_column_name( name).gsub /"\."/, ','
103
+ @quote.quote_column_name( name).gsub /"\."/, ','
81
104
  end
82
105
 
83
106
  def quote_table_name name
@@ -85,7 +108,7 @@ class SmqlToAR
85
108
  when Array, Column::Col then @table_alias[Array.wrap name]
86
109
  else name.to_s
87
110
  end
88
- @quoter.quote_table_name( name).gsub /"\."/, ','
111
+ @quote.quote_table_name name
89
112
  end
90
113
 
91
114
  def column table, name
@@ -93,7 +116,7 @@ class SmqlToAR
93
116
  end
94
117
 
95
118
  def build_join orig, pretable, table, prekey, key
96
- " LEFT JOIN #{orig} AS #{quote_table_name table} ON #{column pretable, prekey} = #{column table, key} "
119
+ "\tLEFT JOIN #{orig} AS #{quote_table_name table}\n\tON #{column pretable, prekey} = #{column table, key}\n"
97
120
  end
98
121
 
99
122
  def sub_joins table, col, model, query
@@ -104,7 +127,8 @@ class SmqlToAR
104
127
  def join_ table, model, query, pretable = nil
105
128
  pretable ||= table[0...-1]
106
129
  @table_model[ table] = model
107
- premodel = @table_model[ pretable]
130
+ @table_model.rehash
131
+ premodel = @table_model.find {|k,v| pretable == k }[1]
108
132
  t = @table_alias[ table]
109
133
  pt = quote_table_name table[ 0...-1]
110
134
  refl = premodel.reflections[table.last.to_sym]
@@ -195,7 +219,7 @@ class SmqlToAR
195
219
 
196
220
  class SubBuilder < Array
197
221
  attr_reader :parent, :_where
198
- delegate :wobs, :joins, :includes, :sub_joins, :vid, :quote_column_name, :quoter, :quote_table_name, :column, :to => :parent
222
+ delegate :wobs, :joins, :includes, :sub_joins, :vid, :quote_column_name, :quote, :quote_table_name, :column, :to => :parent
199
223
 
200
224
  def initialize parent, tmp = false
201
225
  @parent = parent
metadata CHANGED
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
6
6
  - 0
7
7
  - 0
8
8
  - 4
9
- - 7
10
- version: 0.0.4.7
9
+ - 8
10
+ version: 0.0.4.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Denis Knauf
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-11-30 00:00:00 +01:00
18
+ date: 2012-01-12 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency