brick 1.0.190 → 1.0.192
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/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
|