brick 1.0.190 → 1.0.192
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/brick/config.rb +8 -0
- data/lib/brick/extensions.rb +175 -48
- data/lib/brick/frameworks/rails/engine.rb +34 -14
- data/lib/brick/frameworks/rails/form_builder.rb +2 -1
- data/lib/brick/frameworks/rails/form_tags.rb +13 -4
- data/lib/brick/frameworks/rails.rb +6 -0
- data/lib/brick/route_mapper.rb +348 -0
- data/lib/brick/version_number.rb +1 -1
- data/lib/brick.rb +10 -335
- data/lib/generators/brick/controllers_generator.rb +91 -0
- data/lib/generators/brick/migration_builder.rb +224 -160
- data/lib/generators/brick/migrations_generator.rb +1 -0
- data/lib/generators/brick/models_generator.rb +2 -2
- data/lib/generators/brick/salesforce_migrations_generator.rb +101 -0
- data/lib/generators/brick/salesforce_schema.rb +105 -0
- metadata +6 -2
@@ -0,0 +1,105 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Brick
|
4
|
+
class SalesforceSchema < Nokogiri::XML::SAX::Document
|
5
|
+
include ::Brick::MigrationBuilder
|
6
|
+
|
7
|
+
attr_reader :end_document_proc
|
8
|
+
|
9
|
+
def initialize(end_doc_proc)
|
10
|
+
@end_document_proc = end_doc_proc
|
11
|
+
end
|
12
|
+
|
13
|
+
def start_document
|
14
|
+
# p [:start_document]
|
15
|
+
@salesforce_tables = {}
|
16
|
+
@text_stack = []
|
17
|
+
@all_extends = {}
|
18
|
+
puts 'Each dot is a table:'
|
19
|
+
end
|
20
|
+
|
21
|
+
def end_document
|
22
|
+
puts
|
23
|
+
end_document_proc&.call(@salesforce_tables)
|
24
|
+
end
|
25
|
+
|
26
|
+
def start_element_namespace(name, attrs = [], prefix = nil, uri = nil, ns = [])
|
27
|
+
# p [:start_element, name, attrs, prefix, uri, ns]
|
28
|
+
case name
|
29
|
+
when 'complexType' # Table
|
30
|
+
@last_table = attrs.find { |a| a.localname == 'name' }&.value
|
31
|
+
@fks = {}
|
32
|
+
# if attrs.first&.value&.end_with?('__c') # Starts as a string
|
33
|
+
when 'extension'
|
34
|
+
@last_extension = attrs.find { |a| a.localname == 'base' }.value
|
35
|
+
when 'element' # Column
|
36
|
+
# Extremely rarely this is nil!
|
37
|
+
data_type = attrs.find { |a| a.localname == 'type' }&.value
|
38
|
+
return if !@last_table || data_type.nil? || data_type == 'tns:QueryResult'
|
39
|
+
|
40
|
+
# Promoted to a real SalesforceTable object
|
41
|
+
if @last_table.is_a?(String)
|
42
|
+
@last_table = @salesforce_tables[@last_table] = { extend: @salesforce_tables[@last_extension] }
|
43
|
+
end
|
44
|
+
|
45
|
+
col_name = attrs.find { |a| a.localname == 'name' }&.value
|
46
|
+
|
47
|
+
# Foreign key reference?
|
48
|
+
if data_type&.start_with?('ens:')
|
49
|
+
foreign_table = data_type[4..]
|
50
|
+
if col_name.end_with?('__r')
|
51
|
+
@fks["#{col_name[0..-2]}c"] = foreign_table
|
52
|
+
else # if col_name.end_with?('Id')
|
53
|
+
@fks["#{col_name}Id"] = foreign_table
|
54
|
+
end
|
55
|
+
return
|
56
|
+
end
|
57
|
+
|
58
|
+
# Rarely this is nil
|
59
|
+
nillable = attrs.find { |a| a.localname == 'nillable' }&.value == 'true'
|
60
|
+
min_occurs = attrs.find { |a| a.localname == 'minOccurs' }&.value || -2
|
61
|
+
min_occurs = -1 if min_occurs == 'unbounded'
|
62
|
+
max_occurs = attrs.find { |a| a.localname == 'maxOccurs' }&.value || -2
|
63
|
+
max_occurs = -1 if max_occurs == 'unbounded'
|
64
|
+
col_options = { name: col_name, data_type: :data_type, nillable: :nillable, min_occurs: :min_occurs, max_occurs: :max_occurs }
|
65
|
+
|
66
|
+
(@last_table[:cols] ||= []) << col_options
|
67
|
+
end
|
68
|
+
@text_stack.push +''
|
69
|
+
end
|
70
|
+
|
71
|
+
def end_element_namespace(name, prefix = nil, uri = nil)
|
72
|
+
# p [:end_element, name, prefix, uri]
|
73
|
+
texts = @text_stack.pop
|
74
|
+
case name
|
75
|
+
when 'extension'
|
76
|
+
@last_extension = nil
|
77
|
+
when 'complexType'
|
78
|
+
if @last_table && !@last_table.is_a?(String)
|
79
|
+
# Do up any foreign keys
|
80
|
+
@fks.each do |k, v|
|
81
|
+
# Only a few records set up like this, going to sObject
|
82
|
+
if
|
83
|
+
# (k.downcase.end_with?('recordid') &&
|
84
|
+
# (fk_col = @last_table[:cols].find { |t| t[:name] == "#{k[0..-9]}Id" })
|
85
|
+
# ) ||
|
86
|
+
(fk_col = @last_table[:cols].find { |t| t[:name] == k })
|
87
|
+
fk_col[:fk_reference_to] = v
|
88
|
+
# puts "Skipping #{@last_table[:name]} / #{k}"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
print '.'
|
93
|
+
@last_table = nil
|
94
|
+
end
|
95
|
+
# p [:end_element_texts, name, texts]
|
96
|
+
end
|
97
|
+
|
98
|
+
def characters(string)
|
99
|
+
# p [:characters, string]
|
100
|
+
@text_stack.each do |text|
|
101
|
+
text << string
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.192
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lorin Thwaits
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -248,16 +248,20 @@ files:
|
|
248
248
|
- lib/brick/frameworks/rails/form_tags.rb
|
249
249
|
- lib/brick/frameworks/rspec.rb
|
250
250
|
- lib/brick/join_array.rb
|
251
|
+
- lib/brick/route_mapper.rb
|
251
252
|
- lib/brick/serializers/json.rb
|
252
253
|
- lib/brick/serializers/yaml.rb
|
253
254
|
- lib/brick/tasks/orphans.rake
|
254
255
|
- lib/brick/util.rb
|
255
256
|
- lib/brick/version_number.rb
|
256
257
|
- lib/generators/brick/USAGE
|
258
|
+
- lib/generators/brick/controllers_generator.rb
|
257
259
|
- lib/generators/brick/install_generator.rb
|
258
260
|
- lib/generators/brick/migration_builder.rb
|
259
261
|
- lib/generators/brick/migrations_generator.rb
|
260
262
|
- lib/generators/brick/models_generator.rb
|
263
|
+
- lib/generators/brick/salesforce_migrations_generator.rb
|
264
|
+
- lib/generators/brick/salesforce_schema.rb
|
261
265
|
- lib/generators/brick/seeds_generator.rb
|
262
266
|
- lib/generators/brick/templates/add_object_changes_to_versions.rb.erb
|
263
267
|
- lib/generators/brick/templates/create_versions.rb.erb
|