ryakuzu 0.2.6 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/ryakuzu/main_controller.rb +10 -3
- data/app/controllers/ryakuzu/root_controller.rb +6 -2
- data/app/controllers/ryakuzu/tables_controller.rb +2 -8
- data/app/models/ryakuzu/column.rb +1 -1
- data/app/views/ryakuzu/layouts/_header.html.slim +1 -1
- data/app/views/ryakuzu/main/index.html.slim +1 -0
- data/app/views/ryakuzu/main/schema_error.html.slim +2 -0
- data/app/views/ryakuzu/tables/_column.html.slim +13 -7
- data/lib/ryakuzu/engine.rb +7 -1
- data/lib/ryakuzu/libs.rb +16 -0
- data/lib/ryakuzu/schema_parsing/column_info.rb +76 -0
- data/lib/ryakuzu/{ripper.rb → schema_parsing/ripper.rb} +0 -0
- data/lib/ryakuzu/schema_parsing/schema_service.rb +18 -0
- data/{app/services/ryakuzu → lib/ryakuzu/services}/add_column_service.rb +0 -0
- data/lib/ryakuzu/services/column_default_service.rb +59 -0
- data/{app/services/ryakuzu → lib/ryakuzu/services}/column_service.rb +0 -0
- data/{app/services/ryakuzu → lib/ryakuzu/services}/create_table_service.rb +0 -0
- data/{app/services/ryakuzu → lib/ryakuzu/services}/migration_service.rb +0 -0
- data/{app/services/ryakuzu → lib/ryakuzu/services}/remove_service.rb +0 -0
- data/{app/services/ryakuzu → lib/ryakuzu/services}/run_migration.rb +0 -0
- data/{app/services/ryakuzu → lib/ryakuzu/services}/table_service.rb +0 -0
- data/lib/ryakuzu/{boolean_patch.rb → tools/boolean_patch.rb} +0 -0
- data/lib/ryakuzu/tools/migration_text.rb +33 -0
- data/lib/ryakuzu/tools/schema_extenstions.rb +19 -0
- data/lib/ryakuzu/version.rb +1 -1
- data/test/dummy/config/routes.rb +0 -2
- data/test/dummy/log/test.log +1018 -7183
- data/test/services/column_default_service_test.rb +11 -4
- metadata +18 -17
- data/app/services/ryakuzu/column_default_service.rb +0 -64
- data/lib/ryakuzu/column_info.rb +0 -54
- data/lib/ryakuzu/schema_extenstions.rb +0 -19
- data/lib/ryakuzu/schema_service.rb +0 -67
- data/test/lib/schema_service_test.rb +0 -27
@@ -1,10 +1,17 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class ColumnDefaultServiceTest < ActiveSupport::TestCase
|
4
|
-
test '
|
5
|
-
migration = Ryakuzu::
|
4
|
+
test 'migration text for string' do
|
5
|
+
migration = Ryakuzu::MigrationText.new('users', 'available', 'string', true)
|
6
6
|
|
7
|
-
except = "remove_column :users, :
|
8
|
-
assert_equal except, migration.
|
7
|
+
except = "remove_column :users, :available\nadd_column :users, :available, :string, default: 'true'"
|
8
|
+
assert_equal except, migration.default_migration
|
9
|
+
end
|
10
|
+
|
11
|
+
test 'migration text for type' do
|
12
|
+
migration = Ryakuzu::MigrationText.new('users', 'available', 'Integer', '')
|
13
|
+
|
14
|
+
except = "remove_column :users, :available\nadd_column :users, :available, :integer"
|
15
|
+
assert_equal except, migration.type_migration
|
9
16
|
end
|
10
17
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ryakuzu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ID25
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -126,14 +126,6 @@ files:
|
|
126
126
|
- app/models/ryakuzu/column_defaults.rb
|
127
127
|
- app/models/ryakuzu/schema.rb
|
128
128
|
- app/models/ryakuzu/table.rb
|
129
|
-
- app/services/ryakuzu/add_column_service.rb
|
130
|
-
- app/services/ryakuzu/column_default_service.rb
|
131
|
-
- app/services/ryakuzu/column_service.rb
|
132
|
-
- app/services/ryakuzu/create_table_service.rb
|
133
|
-
- app/services/ryakuzu/migration_service.rb
|
134
|
-
- app/services/ryakuzu/remove_service.rb
|
135
|
-
- app/services/ryakuzu/run_migration.rb
|
136
|
-
- app/services/ryakuzu/table_service.rb
|
137
129
|
- app/views/ryakuzu/layouts/_cdn.erb
|
138
130
|
- app/views/ryakuzu/layouts/_header.html.slim
|
139
131
|
- app/views/ryakuzu/layouts/_preload.html.slim
|
@@ -143,6 +135,7 @@ files:
|
|
143
135
|
- app/views/ryakuzu/main/_column_form.html.slim
|
144
136
|
- app/views/ryakuzu/main/error_500.html.slim
|
145
137
|
- app/views/ryakuzu/main/index.html.slim
|
138
|
+
- app/views/ryakuzu/main/schema_error.html.slim
|
146
139
|
- app/views/ryakuzu/tables/_add_column.html.slim
|
147
140
|
- app/views/ryakuzu/tables/_add_table.html.slim
|
148
141
|
- app/views/ryakuzu/tables/_column.html.slim
|
@@ -158,12 +151,22 @@ files:
|
|
158
151
|
- app/views/ryakuzu/tables/remove_column.js.erb
|
159
152
|
- config/routes.rb
|
160
153
|
- lib/ryakuzu.rb
|
161
|
-
- lib/ryakuzu/boolean_patch.rb
|
162
|
-
- lib/ryakuzu/column_info.rb
|
163
154
|
- lib/ryakuzu/engine.rb
|
164
|
-
- lib/ryakuzu/
|
165
|
-
- lib/ryakuzu/
|
166
|
-
- lib/ryakuzu/
|
155
|
+
- lib/ryakuzu/libs.rb
|
156
|
+
- lib/ryakuzu/schema_parsing/column_info.rb
|
157
|
+
- lib/ryakuzu/schema_parsing/ripper.rb
|
158
|
+
- lib/ryakuzu/schema_parsing/schema_service.rb
|
159
|
+
- lib/ryakuzu/services/add_column_service.rb
|
160
|
+
- lib/ryakuzu/services/column_default_service.rb
|
161
|
+
- lib/ryakuzu/services/column_service.rb
|
162
|
+
- lib/ryakuzu/services/create_table_service.rb
|
163
|
+
- lib/ryakuzu/services/migration_service.rb
|
164
|
+
- lib/ryakuzu/services/remove_service.rb
|
165
|
+
- lib/ryakuzu/services/run_migration.rb
|
166
|
+
- lib/ryakuzu/services/table_service.rb
|
167
|
+
- lib/ryakuzu/tools/boolean_patch.rb
|
168
|
+
- lib/ryakuzu/tools/migration_text.rb
|
169
|
+
- lib/ryakuzu/tools/schema_extenstions.rb
|
167
170
|
- lib/ryakuzu/version.rb
|
168
171
|
- lib/tasks/ryakuzu_tasks.rake
|
169
172
|
- test/dummy/README.rdoc
|
@@ -205,7 +208,6 @@ files:
|
|
205
208
|
- test/dummy/public/favicon.ico
|
206
209
|
- test/integration/navigation_test.rb
|
207
210
|
- test/lib/column_info_test.rb
|
208
|
-
- test/lib/schema_service_test.rb
|
209
211
|
- test/ryakuzu_test.rb
|
210
212
|
- test/services/add_column_service_test.rb
|
211
213
|
- test/services/column_default_service_test.rb
|
@@ -238,7 +240,6 @@ signing_key:
|
|
238
240
|
specification_version: 4
|
239
241
|
summary: Ryakuzu helps you to manage your schema.rb
|
240
242
|
test_files:
|
241
|
-
- test/lib/schema_service_test.rb
|
242
243
|
- test/lib/column_info_test.rb
|
243
244
|
- test/ryakuzu_test.rb
|
244
245
|
- test/integration/navigation_test.rb
|
@@ -1,64 +0,0 @@
|
|
1
|
-
require_relative '../../../lib/ryakuzu/boolean_patch'
|
2
|
-
|
3
|
-
module Ryakuzu
|
4
|
-
class ColumnDefaultService
|
5
|
-
attr_reader :params, :default, :index, :null, :type, :table, :column,
|
6
|
-
:old_null, :old_default, :parameters, :old_type
|
7
|
-
|
8
|
-
def initialize(params)
|
9
|
-
@params = params
|
10
|
-
@parameters = params['parameters']
|
11
|
-
@default = params['default']
|
12
|
-
@index = params['index']
|
13
|
-
@null = params['null']
|
14
|
-
@type = params['type']
|
15
|
-
@table = params['table']
|
16
|
-
@column = params['column']
|
17
|
-
@old_type = params['parameters'][':old_type']
|
18
|
-
@old_default = params['parameters'][':old_default']
|
19
|
-
end
|
20
|
-
|
21
|
-
def call
|
22
|
-
processing_params
|
23
|
-
current = params.reject { |k, _v| %w(table column).include? k }.except('parameters')
|
24
|
-
|
25
|
-
zip = current.zip(params['parameters'])
|
26
|
-
|
27
|
-
zip.each do |k, v|
|
28
|
-
run_column_default_migration(k, table, column) if k[1] != v[1]
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def processing_params
|
35
|
-
# TODO: make index and null select
|
36
|
-
[null, index, old_null].each do |key|
|
37
|
-
case key
|
38
|
-
when 'none' then 'none'
|
39
|
-
when true then true
|
40
|
-
when false then false
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
@default = '' if default == "\"\""
|
45
|
-
@old_default = '' if old_default == "\"\""
|
46
|
-
type.gsub!('Current: ', '')
|
47
|
-
end
|
48
|
-
|
49
|
-
def run_column_default_migration(type_column, tabl, kolumn)
|
50
|
-
text = remove_column_text(tabl, kolumn, type_column)
|
51
|
-
p tabl
|
52
|
-
p kolumn
|
53
|
-
p type_column
|
54
|
-
|
55
|
-
Ryakuzu::RunMigration.new(table: tabl, column: kolumn).call(kolumn, text, 'column')
|
56
|
-
end
|
57
|
-
|
58
|
-
def remove_column_text(tabl, kolumn, type_column)
|
59
|
-
type_kolumn = type_column[1].downcase.to_sym
|
60
|
-
text = "remove_column :#{tabl.tableize}, :#{kolumn}\n"
|
61
|
-
text.concat "add_column :#{tabl.tableize}, :#{kolumn}, :#{type_kolumn}"
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
data/lib/ryakuzu/column_info.rb
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
module Ryakuzu
|
2
|
-
class ColumnInfo
|
3
|
-
include Ryakuzu::SchemaExtenstions
|
4
|
-
|
5
|
-
def initialize
|
6
|
-
@file = File.open(Rails.root.join('db', 'schema.rb'))
|
7
|
-
@schema = Ryakuzu::Ripper.parse(file)
|
8
|
-
end
|
9
|
-
|
10
|
-
def call(table, column)
|
11
|
-
file.each do |line|
|
12
|
-
parts = line.split ' '
|
13
|
-
next if parts.nil? || parts.length < 1 || parts[0] == '#'
|
14
|
-
@table_name = table_name(parts[1]) if parts[0] == 'create_table'
|
15
|
-
|
16
|
-
next unless @table_name == table
|
17
|
-
@field_name = field_name(parts[1]) if parts[0][0] == 't'
|
18
|
-
next unless @field_name == column
|
19
|
-
parts[0][0] = ''
|
20
|
-
schema.each do |schema_line|
|
21
|
-
schema_line[1].each do |part|
|
22
|
-
next unless part == field_name(parts[1])
|
23
|
-
next unless parts[1]
|
24
|
-
hash = remove_extra_chars(parts[0..1])
|
25
|
-
column = column_and_type(hash, @table_name)
|
26
|
-
size = parts[2..parts.count]
|
27
|
-
parameters = remove_extra_chars(size)
|
28
|
-
temporary = make_hash(parameters) if parameters
|
29
|
-
@columns = column.merge!(temporary)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
Ryakuzu::Column.new(@columns.symbolize_keys).column_info
|
34
|
-
end
|
35
|
-
|
36
|
-
private
|
37
|
-
|
38
|
-
def remove_extra_chars(lines)
|
39
|
-
lines.map { |e| e.gsub(/\W/, '') }
|
40
|
-
end
|
41
|
-
|
42
|
-
def column_and_type(lines, table_name)
|
43
|
-
{ table: table_name, type: lines[0], column: lines[1] }
|
44
|
-
end
|
45
|
-
|
46
|
-
def make_hash(parameters)
|
47
|
-
temporary = {}
|
48
|
-
parameters.each_slice(2) do |slice|
|
49
|
-
temporary.merge!(Hash[*slice])
|
50
|
-
end
|
51
|
-
temporary
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Ryakuzu
|
2
|
-
module SchemaExtenstions
|
3
|
-
require 'virtus'
|
4
|
-
require 'csv'
|
5
|
-
require 'fileutils'
|
6
|
-
|
7
|
-
attr_reader :file, :schema, :sch_hash
|
8
|
-
|
9
|
-
private
|
10
|
-
|
11
|
-
def table_name(table)
|
12
|
-
table.delete("\"").delete(',')
|
13
|
-
end
|
14
|
-
|
15
|
-
def field_name(field)
|
16
|
-
field.delete("\",").chomp('t.')
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
module Ryakuzu
|
2
|
-
class SchemaService
|
3
|
-
include Ryakuzu::SchemaExtenstions
|
4
|
-
|
5
|
-
def initialize
|
6
|
-
@file = File.readlines(Rails.root.join('db', 'schema.rb'))
|
7
|
-
@schema = ''
|
8
|
-
@sch_hash = {}
|
9
|
-
end
|
10
|
-
|
11
|
-
def call
|
12
|
-
parse_schema
|
13
|
-
create_hash_from_schema
|
14
|
-
end
|
15
|
-
|
16
|
-
def hash
|
17
|
-
call
|
18
|
-
models = []
|
19
|
-
sch_hash.map { |key, value| models << Ryakuzu::Table.generate_models(key, value) }
|
20
|
-
models
|
21
|
-
end
|
22
|
-
|
23
|
-
def schema_to_csv
|
24
|
-
CSV.open('schema.csv', 'wb') { |csv| sch_hash.to_a.map { |elem| csv << elem } }
|
25
|
-
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
def parse_schema
|
30
|
-
file.each do |line|
|
31
|
-
parts = line.split ' '
|
32
|
-
next if parts.nil? || parts.length < 1 || parts[0] == '#'
|
33
|
-
if parts[0] == 'create_table'
|
34
|
-
table_name = table_name(parts[1])
|
35
|
-
schema << "__#{table_name},"
|
36
|
-
end
|
37
|
-
|
38
|
-
if parts[0][0] == 't'
|
39
|
-
field_name = field_name(parts[1])
|
40
|
-
schema << "#{field_name}__"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def create_hash_from_schema
|
46
|
-
return if sch_hash.present?
|
47
|
-
array = convert_source
|
48
|
-
hash_array = convert_to_hash(array)
|
49
|
-
|
50
|
-
hash_array.each_with_index do |i, _v|
|
51
|
-
sch_hash.merge!(i[0] => i.reject { |k| k == i[0] })
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def convert_source
|
56
|
-
@schema = schema.split('__').join(',')
|
57
|
-
schema[0] = ''
|
58
|
-
schema.split(',,')
|
59
|
-
end
|
60
|
-
|
61
|
-
def convert_to_hash(array)
|
62
|
-
arr_m = []
|
63
|
-
array.map { |k, _v| arr_m << k.split(',') }
|
64
|
-
arr_m
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class SchemaServiceTest < ActiveSupport::TestCase
|
4
|
-
schema_array = [%w(authorizations user_id provider uid created_at updated_at), %w(bags team_id created_at updated_at), %w(enemies health magic attack exp move created_at updated_at type user_id img_url coins), %w(items name item_params itemable_id itemable_type created_at updated_at used), %w(monsters team_id user_id name health magic created_at updated_at img_link attack exp level previous_health previous_magic armed item_id), %w(shops name created_at updated_at), %w(teams user_id name level created_at updated_at monsters_count monsters_limit exp move to_next_level), %w(users email encrypted_password reset_password_token reset_password_sent_at remember_created_at sign_in_count current_sign_in_at last_sign_in_at current_sign_in_ip last_sign_in_ip created_at updated_at coins)]
|
5
|
-
|
6
|
-
test '#hash' do
|
7
|
-
schema = Ryakuzu::SchemaService.new
|
8
|
-
|
9
|
-
assert_equal schema.hash.map { |e| e.is_a?(Object) }[0], true
|
10
|
-
assert_equal schema.hash.is_a?(Array), true
|
11
|
-
end
|
12
|
-
|
13
|
-
test '#convert_to_hash' do
|
14
|
-
schema = Ryakuzu::SchemaService.new
|
15
|
-
|
16
|
-
schema.send(:parse_schema)
|
17
|
-
source = schema.send(:convert_source)
|
18
|
-
|
19
|
-
assert_equal schema.send(:convert_to_hash, source), schema_array
|
20
|
-
end
|
21
|
-
|
22
|
-
test '#call' do
|
23
|
-
schema = Ryakuzu::SchemaService.new
|
24
|
-
|
25
|
-
assert_equal schema_array, schema.call
|
26
|
-
end
|
27
|
-
end
|