td_model 0.0.1 → 0.0.2
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/README.md +1 -0
- data/lib/td_model/base.rb +49 -16
- data/lib/td_model/sql.rb +3 -5
- data/lib/td_model/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: b463ad1750c71a6e85acc68b4d742be47f881d07
|
4
|
+
data.tar.gz: c2dd1ec98d5c7fef668e8008c78efde3c4dacd33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b76ea582640c84d5b9dc4fd696ec62c76e36a7ef6f661284a74ad54ccd9ddbb5e978da21595879253f346ab2ab9130b8d71413235aafb79c4e002c4e9d822bfc
|
7
|
+
data.tar.gz: 2e77bf021036b082aa1a3f827d75b5466d199b3b7cff61ea7801bfa047ba57419d0255eadad101299b9061db6f6db8cfa6795666a9daf0f0fdadc486d9e80738
|
data/README.md
CHANGED
data/lib/td_model/base.rb
CHANGED
@@ -3,16 +3,13 @@ require "td_model/errors/failed_to_type_validation_of_column_error"
|
|
3
3
|
|
4
4
|
module TdModel
|
5
5
|
class Base
|
6
|
-
|
7
|
-
@@ATTR_TYPES = {}
|
8
|
-
@@ATTR_DEFAULT_VALUES = {}
|
9
|
-
@@TABLE_NAME = {}
|
6
|
+
include ::TdModel::Sql
|
10
7
|
|
11
8
|
attr_accessor :table_name, :attr_values, :where_sql, :sql, :select_sql, :select_keys, :order_sql, :limit_sql
|
12
9
|
|
13
10
|
def initialize(args=nil)
|
14
|
-
self.class.set_column(:time) unless
|
15
|
-
@attr_values =
|
11
|
+
self.class.set_column(:time) unless self.class.attr_types.keys.include?(:time)
|
12
|
+
@attr_values = self.class.attr_default_values.clone
|
16
13
|
@select_keys = []
|
17
14
|
@attr_values.keys.each do |col|
|
18
15
|
proc = Proc.new { @attr_values[col] }
|
@@ -29,21 +26,40 @@ module TdModel
|
|
29
26
|
end
|
30
27
|
end
|
31
28
|
|
29
|
+
def self.attr_types
|
30
|
+
{}
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.attr_default_values
|
34
|
+
{}
|
35
|
+
end
|
36
|
+
|
32
37
|
def self.set_column(name, type=nil)
|
33
|
-
|
34
|
-
|
38
|
+
attr_types = self.attr_types
|
39
|
+
attr_types.store(name, type)
|
40
|
+
self.define_singleton_method :attr_types do
|
41
|
+
attr_types
|
42
|
+
end
|
43
|
+
|
44
|
+
attr_default_values = self.attr_default_values
|
45
|
+
attr_default_values.store(name, self.init_type_value(type))
|
46
|
+
self.define_singleton_method :attr_default_values do
|
47
|
+
attr_default_values
|
48
|
+
end
|
35
49
|
end
|
36
50
|
|
37
51
|
def self.table_name=(name)
|
38
|
-
|
52
|
+
self.define_singleton_method :table_name do
|
53
|
+
name
|
54
|
+
end
|
39
55
|
end
|
40
56
|
|
41
57
|
def self.table_name
|
42
|
-
|
58
|
+
self.to_s.underscore
|
43
59
|
end
|
44
60
|
|
45
61
|
def table_name
|
46
|
-
|
62
|
+
self.class.table_name || self.class.to_s.underscore
|
47
63
|
end
|
48
64
|
|
49
65
|
def create
|
@@ -59,7 +75,7 @@ module TdModel
|
|
59
75
|
end
|
60
76
|
|
61
77
|
def valid!(args)
|
62
|
-
|
78
|
+
self.class.attr_types.each do |key, val|
|
63
79
|
next if val.nil?
|
64
80
|
unless args[key].kind_of?(val)
|
65
81
|
raise ::TdModel::Errors::FailedToTypeValidationOfColumnError
|
@@ -76,8 +92,8 @@ module TdModel
|
|
76
92
|
end
|
77
93
|
end
|
78
94
|
|
79
|
-
def self.
|
80
|
-
|
95
|
+
def self.where(obj)
|
96
|
+
self.new.where(obj)
|
81
97
|
end
|
82
98
|
|
83
99
|
def where(obj)
|
@@ -104,6 +120,11 @@ module TdModel
|
|
104
120
|
self
|
105
121
|
end
|
106
122
|
|
123
|
+
|
124
|
+
def self.order(col, sort=nil)
|
125
|
+
self.new.order(col, sort)
|
126
|
+
end
|
127
|
+
|
107
128
|
def order(col, sort=nil)
|
108
129
|
if col.instance_of?(Array)
|
109
130
|
col.each do |column|
|
@@ -124,10 +145,18 @@ module TdModel
|
|
124
145
|
self
|
125
146
|
end
|
126
147
|
|
148
|
+
def self.reverse_order(col)
|
149
|
+
self.new.reverse_order(col)
|
150
|
+
end
|
151
|
+
|
127
152
|
def reverse_order(col)
|
128
153
|
self.order(col, 'DESC')
|
129
154
|
end
|
130
155
|
|
156
|
+
def self.limit(num=nil)
|
157
|
+
self.new.limit(num)
|
158
|
+
end
|
159
|
+
|
131
160
|
def limit(num=nil)
|
132
161
|
if num.present?
|
133
162
|
@limit_sql = "LIMIT #{num}"
|
@@ -138,7 +167,7 @@ module TdModel
|
|
138
167
|
def query_execute
|
139
168
|
if @select_sql.blank?
|
140
169
|
@select_keys = [:time]
|
141
|
-
|
170
|
+
self.class.attr_types.keys.each do |key|
|
142
171
|
if @select_sql.blank?
|
143
172
|
@select_sql = ''
|
144
173
|
@select_sql += "SELECT #{self.table_name}.#{key}"
|
@@ -149,7 +178,7 @@ module TdModel
|
|
149
178
|
end
|
150
179
|
end
|
151
180
|
@sql = "#{@select_sql} FROM #{self.table_name} #{@where_sql} #{@order_sql} #{@limit_sql}"
|
152
|
-
res =
|
181
|
+
res = self.query(@sql)
|
153
182
|
|
154
183
|
if res.blank?
|
155
184
|
result = [self.class.new]
|
@@ -166,6 +195,10 @@ module TdModel
|
|
166
195
|
result
|
167
196
|
end
|
168
197
|
|
198
|
+
def self.select(args)
|
199
|
+
self.new.select(args)
|
200
|
+
end
|
201
|
+
|
169
202
|
def select(args)
|
170
203
|
@select_sql = ''
|
171
204
|
@select_keys = []
|
data/lib/td_model/sql.rb
CHANGED
@@ -1,10 +1,8 @@
|
|
1
1
|
module TdModel
|
2
2
|
module Sql
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
td_client = TdModel.config.td_client
|
7
|
-
job = td_client.query(TdModel.config.database_name, sql, nil, nil, nil, type: :presto)
|
3
|
+
def self.query(sql)
|
4
|
+
td_client = ::TdModel.config.td_client
|
5
|
+
job = td_client.query(::TdModel.config.database_name, sql, nil, nil, nil, type: :presto)
|
8
6
|
|
9
7
|
until job.finished?
|
10
8
|
sleep 2
|
data/lib/td_model/version.rb
CHANGED