tgauge 0.1.7 → 0.2.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/TestProj/Gemfile +3 -0
- data/TestProj/Gemfile.lock +44 -0
- data/TestProj/app/controllers/application_controller.rb +3 -0
- data/TestProj/app/controllers/trains_controller.rb +7 -0
- data/TestProj/app/models/train.rb +8 -0
- data/TestProj/config/database.yml +1 -0
- data/TestProj/config/routes.rb +9 -0
- data/TestProj/db/migrations/1476832713_create_train}.sql +4 -0
- data/TestProj/db/seeds.rb +10 -0
- data/bin/cli.rb +11 -11
- data/lib/app/models/routes.rb +7 -0
- data/lib/app/models/trecord_base.rb +44 -28
- data/lib/db/db_connection.rb +31 -26
- data/lib/templates/app/controllers/application_controller.rb +3 -0
- data/lib/templates/config/routes.rb +1 -1
- data/lib/version.rb +1 -1
- metadata +12 -2
- data/lib/templates/app/application_controller.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07619a69df37ace4f1529a5b897ca6353382cce2
|
4
|
+
data.tar.gz: 26768915f63cc53cd2ea4dc2f50c0eebf4ff568d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe5386f187073c27138a395b63dca860726ec1ad987ffa3679563eb8d25402be0ae0db573bb17904ff1134df880f5e61d52e0522b6b65a01bf3586cd9774c47b
|
7
|
+
data.tar.gz: de1aa7a3a56fdb41a4c8901236944aecfd2db72354eaf476071fce7940bd63dac70ebd1c4dff3c4de264f926da1714885a1bdf9a8562f92e1bcfe058a969a738
|
data/TestProj/Gemfile
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
activesupport (4.2.7.1)
|
5
|
+
i18n (~> 0.7)
|
6
|
+
json (~> 1.7, >= 1.7.7)
|
7
|
+
minitest (~> 5.1)
|
8
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
9
|
+
tzinfo (~> 1.1)
|
10
|
+
coderay (1.1.1)
|
11
|
+
fileutils (0.7)
|
12
|
+
rmagick (>= 2.13.1)
|
13
|
+
i18n (0.7.0)
|
14
|
+
json (1.8.3)
|
15
|
+
method_source (0.8.2)
|
16
|
+
minitest (5.9.1)
|
17
|
+
pg (0.19.0)
|
18
|
+
pry (0.10.4)
|
19
|
+
coderay (~> 1.1.0)
|
20
|
+
method_source (~> 0.8.1)
|
21
|
+
slop (~> 3.4)
|
22
|
+
rack (1.6.4)
|
23
|
+
rmagick (2.16.0)
|
24
|
+
slop (3.6.0)
|
25
|
+
tgauge (0.1.7)
|
26
|
+
activesupport (~> 4.2, >= 4.2.5.1)
|
27
|
+
fileutils (~> 0.7)
|
28
|
+
pg (~> 0.18)
|
29
|
+
pry (~> 0.10.3)
|
30
|
+
rack (~> 1.6, >= 1.6.4)
|
31
|
+
thor (~> 0.19)
|
32
|
+
thor (0.19.1)
|
33
|
+
thread_safe (0.3.5)
|
34
|
+
tzinfo (1.2.2)
|
35
|
+
thread_safe (~> 0.1)
|
36
|
+
|
37
|
+
PLATFORMS
|
38
|
+
ruby
|
39
|
+
|
40
|
+
DEPENDENCIES
|
41
|
+
tgauge
|
42
|
+
|
43
|
+
BUNDLED WITH
|
44
|
+
1.13.0
|
@@ -0,0 +1 @@
|
|
1
|
+
database: TestProj
|
data/bin/cli.rb
CHANGED
@@ -6,19 +6,19 @@ module TGauge
|
|
6
6
|
class Generate < Thor
|
7
7
|
desc 'model <name>', 'generate a model.'
|
8
8
|
def model(name)
|
9
|
-
File.open(
|
9
|
+
File.open("./app/models/#{name.downcase}.rb", 'w') do |f|
|
10
10
|
f.write("class #{name.capitalize} < TGauge::TRecordBase\n\n")
|
11
11
|
f.write("end\n")
|
12
12
|
f.write("#{name.capitalize}.finalize!")
|
13
13
|
end
|
14
14
|
|
15
|
-
migration("
|
15
|
+
migration("#{name.capitalize}")
|
16
16
|
puts "#{name} model created"
|
17
17
|
end
|
18
18
|
|
19
19
|
desc 'controller <name>', 'generate a controller.'
|
20
20
|
def controller(name)
|
21
|
-
File.open(
|
21
|
+
File.open("./app/controllers/#{name.downcase}_controller.rb", 'w') do |f|
|
22
22
|
f.write("class #{name.capitalize}Controller < TGauge::TControllerBase\n\n")
|
23
23
|
f.write("end")
|
24
24
|
end
|
@@ -33,7 +33,7 @@ module TGauge
|
|
33
33
|
ts = Time.now.to_i
|
34
34
|
filename = "#{ts}_#{name.underscore.downcase}"
|
35
35
|
|
36
|
-
File.open(
|
36
|
+
File.open("./db/migrations/#{filename}.sql", 'w') do |f|
|
37
37
|
f.write "CREATE TABLE IF NOT EXISTS #{name} (\n"
|
38
38
|
f.write "\tid SERIAL PRIMARY KEY,\n"
|
39
39
|
f.write ')'
|
@@ -44,7 +44,7 @@ module TGauge
|
|
44
44
|
class Db < Thor
|
45
45
|
desc 'create', 'creates the DB'
|
46
46
|
def create
|
47
|
-
require_relative '../lib/db_connection'
|
47
|
+
require_relative '../lib/db/db_connection'
|
48
48
|
TGauge::DBConnection.reset
|
49
49
|
puts 'db created!'
|
50
50
|
end
|
@@ -53,14 +53,14 @@ module TGauge
|
|
53
53
|
def migrate
|
54
54
|
# Creates Version table if necessary,
|
55
55
|
# then runs needed migrations in order.
|
56
|
-
require_relative '../lib/db_connection'
|
56
|
+
require_relative '../lib/db/db_connection'
|
57
57
|
TGauge::DBConnection.migrate
|
58
58
|
puts 'migrated!'
|
59
59
|
end
|
60
60
|
|
61
61
|
desc 'seed', 'seeds the DB'
|
62
62
|
def seed
|
63
|
-
require_relative '../lib/
|
63
|
+
require_relative '../lib/tgauge'
|
64
64
|
TGauge::Seed.populate
|
65
65
|
puts 'db seeded!'
|
66
66
|
end
|
@@ -102,18 +102,18 @@ module TGauge
|
|
102
102
|
Dir.mkdir "./#{name}/app/views"
|
103
103
|
Dir.mkdir "./#{name}/app/controllers"
|
104
104
|
File.open("./#{name}/app/controllers/application_controller.rb", 'w') do |f|
|
105
|
-
f.write File.read(File.expand_path('../../lib/
|
105
|
+
f.write File.read(File.expand_path('../../lib/templates/app/controllers/application_controller.rb', __FILE__))
|
106
106
|
end
|
107
107
|
File.open("./#{name}/config/routes.rb", 'w') do |f|
|
108
|
-
f.write File.read(File.expand_path('../../lib/
|
108
|
+
f.write File.read(File.expand_path('../../lib/templates/config/routes.rb', __FILE__))
|
109
109
|
end
|
110
110
|
Dir.mkdir "./#{name}/db"
|
111
111
|
Dir.mkdir "./#{name}/db/migrations"
|
112
112
|
File.open("./#{name}/db/seeds.rb", 'w') do |f|
|
113
|
-
f.write File.read(File.expand_path('../../lib/
|
113
|
+
f.write File.read(File.expand_path('../../lib/templates/db/seeds.rb', __FILE__))
|
114
114
|
end
|
115
115
|
File.open("./#{name}/Gemfile", 'w') do |f|
|
116
|
-
f.write File.read(File.expand_path('../../lib/
|
116
|
+
f.write File.read(File.expand_path('../../lib/templates/Gemfile', __FILE__))
|
117
117
|
end
|
118
118
|
end
|
119
119
|
end
|
@@ -28,17 +28,20 @@ module TGauge
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
+
def self.destroy_all
|
32
|
+
all.each(&:destroy!)
|
33
|
+
end
|
34
|
+
|
31
35
|
def self.columns
|
32
36
|
# ...
|
33
37
|
return @columns if @columns
|
34
38
|
|
35
39
|
arr = DBConnection.execute(<<-SQL)
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
+
SELECT
|
41
|
+
*
|
42
|
+
FROM
|
43
|
+
#{self.table_name}
|
40
44
|
SQL
|
41
|
-
|
42
45
|
@columns = []
|
43
46
|
arr.nfields.times do |i|
|
44
47
|
@columns << arr.fname(i)
|
@@ -49,7 +52,7 @@ module TGauge
|
|
49
52
|
|
50
53
|
def self.finalize!
|
51
54
|
columns.each do |column|
|
52
|
-
|
55
|
+
inst_var = "@" + column.to_s
|
53
56
|
define_method(column) do
|
54
57
|
attributes[column]
|
55
58
|
end
|
@@ -69,10 +72,10 @@ module TGauge
|
|
69
72
|
|
70
73
|
def self.all
|
71
74
|
objs_arr = DBConnection.execute(<<-SQL)
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
75
|
+
SELECT
|
76
|
+
#{table_name}.*
|
77
|
+
FROM
|
78
|
+
#{table_name}
|
76
79
|
SQL
|
77
80
|
|
78
81
|
parse_all(objs_arr)
|
@@ -85,12 +88,12 @@ module TGauge
|
|
85
88
|
|
86
89
|
def self.find(id)
|
87
90
|
obj = DBConnection.execute(<<-SQL, id)
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
91
|
+
SELECT
|
92
|
+
#{table_name}.*
|
93
|
+
FROM
|
94
|
+
#{table_name}
|
95
|
+
WHERE
|
96
|
+
#{table_name}.id = ?
|
94
97
|
SQL
|
95
98
|
|
96
99
|
parse_all(obj).first
|
@@ -118,26 +121,39 @@ module TGauge
|
|
118
121
|
attr_count = cols.count
|
119
122
|
column_str = cols.join(", ")
|
120
123
|
quest_str = Array.new(attr_count) {"?"}.join(", ")
|
121
|
-
|
124
|
+
|
122
125
|
DBConnection.execute(<<-SQL, attribute_values)
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
126
|
+
INSERT INTO
|
127
|
+
#{table_name} (#{column_str})
|
128
|
+
VALUES
|
129
|
+
(#{quest_str})
|
127
130
|
SQL
|
128
131
|
end
|
129
132
|
|
133
|
+
def destroy!
|
134
|
+
if self.class.find(id)
|
135
|
+
Puffs::DBConnection.execute(<<-SQL)
|
136
|
+
DELETE
|
137
|
+
FROM
|
138
|
+
#{self.class.table_name}
|
139
|
+
WHERE
|
140
|
+
id = #{id}
|
141
|
+
SQL
|
142
|
+
return self
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
130
146
|
def update
|
131
|
-
|
147
|
+
attr_count = columns.count - 1
|
132
148
|
column_str = columns[1..-1].map { |col| "#{col} = ?" }.join(", ")
|
133
149
|
|
134
150
|
DBConnection.execute(<<-SQL, attribute_values)
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
151
|
+
UPDATE
|
152
|
+
#{table_name}
|
153
|
+
SET
|
154
|
+
#{column_str}
|
155
|
+
WHERE
|
156
|
+
id = ?
|
141
157
|
SQL
|
142
158
|
end
|
143
159
|
|
data/lib/db/db_connection.rb
CHANGED
@@ -28,60 +28,65 @@ module TGauge
|
|
28
28
|
instance.exec(File.read(file))
|
29
29
|
instance.exec(<<-SQL)
|
30
30
|
INSERT INTO
|
31
|
-
|
31
|
+
migrations (filename)
|
32
32
|
VALUES
|
33
|
-
|
34
|
-
|
33
|
+
('#{filename}')
|
34
|
+
SQL
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
39
|
def self.instance
|
40
|
-
open if @
|
40
|
+
open if @postgres.nil?
|
41
41
|
|
42
|
-
@
|
42
|
+
@postgres
|
43
43
|
end
|
44
44
|
|
45
45
|
def self.execute(*args)
|
46
|
+
args.flatten!
|
47
|
+
|
46
48
|
print_query(*args)
|
47
|
-
|
49
|
+
query = self.number_placeholders(args.unshift[0])
|
50
|
+
params = args[1..-1]
|
51
|
+
params.flatten!
|
52
|
+
instance.exec(query, params)
|
48
53
|
end
|
49
54
|
|
50
|
-
|
51
|
-
instance.last_insert_row_id
|
52
|
-
end
|
55
|
+
private
|
53
56
|
|
54
|
-
def self.
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
57
|
+
def self.number_placeholders(query_string)
|
58
|
+
count = 0
|
59
|
+
query_string.chars.map do |char|
|
60
|
+
if char == "?"
|
61
|
+
count += 1
|
62
|
+
"$#{count}"
|
63
|
+
else
|
64
|
+
char
|
65
|
+
end
|
66
|
+
end.join("")
|
60
67
|
end
|
61
68
|
|
62
|
-
private
|
63
|
-
|
64
69
|
def self.ensure_migrations_table
|
65
70
|
table = instance.exec(<<-SQL)
|
66
|
-
|
71
|
+
SELECT to_regclass('migrations') AS exists
|
67
72
|
SQL
|
68
73
|
|
69
74
|
unless table[0]['exists']
|
70
75
|
instance.exec(<<-SQL)
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
76
|
+
CREATE TABLE migrations(
|
77
|
+
id SERIAL PRIMARY KEY,
|
78
|
+
filename VARCHAR(255) NOT NULL
|
79
|
+
)
|
75
80
|
SQL
|
76
81
|
end
|
77
82
|
end
|
78
83
|
|
79
84
|
def self.migrated_files
|
80
85
|
Set.new instance.exec(<<-SQL).values.flatten
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
86
|
+
SELECT
|
87
|
+
filename
|
88
|
+
FROM
|
89
|
+
migrations
|
85
90
|
SQL
|
86
91
|
end
|
87
92
|
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tgauge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nam Kim
|
@@ -147,6 +147,15 @@ files:
|
|
147
147
|
- README.md
|
148
148
|
- Rakefile
|
149
149
|
- TGauge.gemspec
|
150
|
+
- TestProj/Gemfile
|
151
|
+
- TestProj/Gemfile.lock
|
152
|
+
- TestProj/app/controllers/application_controller.rb
|
153
|
+
- TestProj/app/controllers/trains_controller.rb
|
154
|
+
- TestProj/app/models/train.rb
|
155
|
+
- TestProj/config/database.yml
|
156
|
+
- TestProj/config/routes.rb
|
157
|
+
- TestProj/db/migrations/1476832713_create_train}.sql
|
158
|
+
- TestProj/db/seeds.rb
|
150
159
|
- bin/cli.rb
|
151
160
|
- bin/console
|
152
161
|
- bin/setup
|
@@ -155,6 +164,7 @@ files:
|
|
155
164
|
- lib/app/controllers/session.rb
|
156
165
|
- lib/app/controllers/tcontroller_base.rb
|
157
166
|
- lib/app/models/associatable.rb
|
167
|
+
- lib/app/models/routes.rb
|
158
168
|
- lib/app/models/searchable.rb
|
159
169
|
- lib/app/models/trecord_base.rb
|
160
170
|
- lib/db/db_connection.rb
|
@@ -164,7 +174,7 @@ files:
|
|
164
174
|
- lib/db/static_viewer.rb
|
165
175
|
- lib/db/templates/error_page.html.erb
|
166
176
|
- lib/templates/Gemfile
|
167
|
-
- lib/templates/app/application_controller.rb
|
177
|
+
- lib/templates/app/controllers/application_controller.rb
|
168
178
|
- lib/templates/config/routes.rb
|
169
179
|
- lib/templates/db/seeds.rb
|
170
180
|
- lib/tgauge.rb
|