jabara 0.0.2 → 0.1.0
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.
- checksums.yaml +4 -4
- data/lib/jabara/mysql/schema.rb +64 -32
- data/lib/jabara/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 921c5db1c328803a7238637ddc12ef2b01dea0a8
|
4
|
+
data.tar.gz: 1c0a3f478163eb62a71f9cc2ad6b15fc4e0eef84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d2b8007f5d9ecf6ddd5fce7c1ce8190bc9245a8f373e725afb8cbc4a803912554ea3747cecd254cac4d2a453168d5bf0a7b33c96b0eab9a6000cf7a436972ff
|
7
|
+
data.tar.gz: 5bfc494d5b8fbf10fc94039260f5d736d847da0acaada34ce867de42a820670e2e843ce71ead59c4f22f49447e315801eac97cee1a73a287d2c67a596e9c6591
|
data/lib/jabara/mysql/schema.rb
CHANGED
@@ -98,6 +98,20 @@ module Jabara
|
|
98
98
|
return ::Jabara.data(repr).is_a? ::DateTime
|
99
99
|
end
|
100
100
|
end
|
101
|
+
|
102
|
+
class Float
|
103
|
+
def self.tag
|
104
|
+
:float
|
105
|
+
end
|
106
|
+
|
107
|
+
def parse(parse)
|
108
|
+
Float(data) # raises ArgumentError, TypeError
|
109
|
+
end
|
110
|
+
|
111
|
+
def validate(repr)
|
112
|
+
return ::Jabara.data(repr).is_a? ::Float
|
113
|
+
end
|
114
|
+
end
|
101
115
|
|
102
116
|
class Schema
|
103
117
|
|
@@ -122,41 +136,18 @@ module Jabara
|
|
122
136
|
return this.schema
|
123
137
|
end
|
124
138
|
|
125
|
-
def self.
|
139
|
+
def self.build_from_sql(query_str)
|
126
140
|
parser = Scheman::Parsers::Mysql.new
|
127
|
-
create_stmt_hash = parser.parse(crete_table_str).to_hash[0][:create_table]
|
128
141
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
type = case field_hash[:type]
|
134
|
-
when "char", "varchar"
|
135
|
-
max = field_hash[:values][0]
|
136
|
-
if max.nil? then Char.new else Char.new max: max end
|
137
|
-
when "text"
|
138
|
-
Text.new
|
139
|
-
when "integer"
|
140
|
-
max = field_hash[:values][0]
|
141
|
-
if max.nil? then Integer.new else Integer.new max: max end
|
142
|
-
when "boolean"
|
143
|
-
Boolean.new
|
144
|
-
when "double"
|
145
|
-
Double.new
|
146
|
-
when "datetime"
|
147
|
-
DateTime.new
|
148
|
-
else
|
149
|
-
raise ArgumentError, 'invalid type'
|
150
|
-
end
|
151
|
-
|
152
|
-
if field_hash[:qualifiers].include?({qualifier: {type: "not_null"}}) then
|
153
|
-
this.column field_hash[:name], type, :not_null
|
154
|
-
else
|
155
|
-
this.column field_hash[:name], type
|
156
|
-
end
|
157
|
-
end
|
142
|
+
create_stmt_hashs = parser.parse(query_str)
|
143
|
+
.to_hash
|
144
|
+
.select {|stmt| not stmt[:create_table].nil? }
|
145
|
+
.map{|stmt| stmt[:create_table] }
|
158
146
|
|
159
|
-
|
147
|
+
create_stmt_hashs.map { |create_stmt_hash|
|
148
|
+
schema = stmt_to_schema(create_stmt_hash)
|
149
|
+
[schema.table_name, schema]
|
150
|
+
}.to_h
|
160
151
|
end
|
161
152
|
|
162
153
|
# 以下DSLメソッド。buildに渡すblock内で使う。
|
@@ -193,6 +184,47 @@ module Jabara
|
|
193
184
|
def datetime
|
194
185
|
DateTime.new
|
195
186
|
end
|
187
|
+
|
188
|
+
def float
|
189
|
+
Float.new
|
190
|
+
end
|
191
|
+
|
192
|
+
private
|
193
|
+
|
194
|
+
def self.stmt_to_schema(create_stmt_hash)
|
195
|
+
this = Builder.new
|
196
|
+
this.schema.table_name = create_stmt_hash[:name]
|
197
|
+
create_stmt_hash[:fields].each do |field_hash|
|
198
|
+
field_hash = field_hash[:field]
|
199
|
+
type = case field_hash[:type]
|
200
|
+
when "char", "varchar"
|
201
|
+
max = field_hash[:values][0]
|
202
|
+
if max.nil? then Char.new else Char.new max: max end
|
203
|
+
when "text"
|
204
|
+
Text.new
|
205
|
+
when "integer"
|
206
|
+
max = field_hash[:values][0]
|
207
|
+
if max.nil? then Integer.new else Integer.new max: max end
|
208
|
+
when "boolean"
|
209
|
+
Boolean.new
|
210
|
+
when "double", "float"
|
211
|
+
Float.new
|
212
|
+
when "datetime"
|
213
|
+
DateTime.new
|
214
|
+
else
|
215
|
+
raise ArgumentError, 'invalid type'
|
216
|
+
end
|
217
|
+
|
218
|
+
if field_hash[:qualifiers].include?({qualifier: {type: "not_null"}}) then
|
219
|
+
this.column field_hash[:name], type, :not_null
|
220
|
+
else
|
221
|
+
this.column field_hash[:name], type
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
this.schema
|
226
|
+
end
|
227
|
+
|
196
228
|
end
|
197
229
|
|
198
230
|
end
|
data/lib/jabara/version.rb
CHANGED