ryakuzu 0.2.6 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/ryakuzu/main_controller.rb +10 -3
  3. data/app/controllers/ryakuzu/root_controller.rb +6 -2
  4. data/app/controllers/ryakuzu/tables_controller.rb +2 -8
  5. data/app/models/ryakuzu/column.rb +1 -1
  6. data/app/views/ryakuzu/layouts/_header.html.slim +1 -1
  7. data/app/views/ryakuzu/main/index.html.slim +1 -0
  8. data/app/views/ryakuzu/main/schema_error.html.slim +2 -0
  9. data/app/views/ryakuzu/tables/_column.html.slim +13 -7
  10. data/lib/ryakuzu/engine.rb +7 -1
  11. data/lib/ryakuzu/libs.rb +16 -0
  12. data/lib/ryakuzu/schema_parsing/column_info.rb +76 -0
  13. data/lib/ryakuzu/{ripper.rb → schema_parsing/ripper.rb} +0 -0
  14. data/lib/ryakuzu/schema_parsing/schema_service.rb +18 -0
  15. data/{app/services/ryakuzu → lib/ryakuzu/services}/add_column_service.rb +0 -0
  16. data/lib/ryakuzu/services/column_default_service.rb +59 -0
  17. data/{app/services/ryakuzu → lib/ryakuzu/services}/column_service.rb +0 -0
  18. data/{app/services/ryakuzu → lib/ryakuzu/services}/create_table_service.rb +0 -0
  19. data/{app/services/ryakuzu → lib/ryakuzu/services}/migration_service.rb +0 -0
  20. data/{app/services/ryakuzu → lib/ryakuzu/services}/remove_service.rb +0 -0
  21. data/{app/services/ryakuzu → lib/ryakuzu/services}/run_migration.rb +0 -0
  22. data/{app/services/ryakuzu → lib/ryakuzu/services}/table_service.rb +0 -0
  23. data/lib/ryakuzu/{boolean_patch.rb → tools/boolean_patch.rb} +0 -0
  24. data/lib/ryakuzu/tools/migration_text.rb +33 -0
  25. data/lib/ryakuzu/tools/schema_extenstions.rb +19 -0
  26. data/lib/ryakuzu/version.rb +1 -1
  27. data/test/dummy/config/routes.rb +0 -2
  28. data/test/dummy/log/test.log +1018 -7183
  29. data/test/services/column_default_service_test.rb +11 -4
  30. metadata +18 -17
  31. data/app/services/ryakuzu/column_default_service.rb +0 -64
  32. data/lib/ryakuzu/column_info.rb +0 -54
  33. data/lib/ryakuzu/schema_extenstions.rb +0 -19
  34. data/lib/ryakuzu/schema_service.rb +0 -67
  35. 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 'valid migration text' do
5
- migration = Ryakuzu::ColumnDefaultService.new('table' => 'users', 'column' => 'accepted', 'type' => 'Boolean', 'parameters' => { ':old_type' => 'string' })
4
+ test 'migration text for string' do
5
+ migration = Ryakuzu::MigrationText.new('users', 'available', 'string', true)
6
6
 
7
- except = "remove_column :users, :accepted\nadd_column :users, :accepted, :boolean"
8
- assert_equal except, migration.send(:remove_column_text, 'users', 'accepted', %w(type Boolean))
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.2.6
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: 2015-12-14 00:00:00.000000000 Z
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/ripper.rb
165
- - lib/ryakuzu/schema_extenstions.rb
166
- - lib/ryakuzu/schema_service.rb
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
@@ -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