motor-admin 0.1.40 → 0.1.41

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c650dcb3b3585c6776bb7ece77590fe9e69e5c64323dfa7827870f11203afe09
4
- data.tar.gz: 4e9e8e62612c93686c1c5ed2532b14a260e44078830302f7155e49a45a0b6a66
3
+ metadata.gz: e199bcfee455dceb3c76240eedc692aa869143ebc5521b3b1c7c6ebacc0ff7ec
4
+ data.tar.gz: 979bd32b1670d8b455a84027979b6e7274ebe5805424382b04fb25ae2cc761d3
5
5
  SHA512:
6
- metadata.gz: a8325df21f414fc4dfb5e61173ca94312662012d3a3ba12cb128a6c7c91d88b0cc97bfb344d8466500f43fd28bc6c3195eaa662e11ddb4c3333fbe1257611ad2
7
- data.tar.gz: 787be19b2a2407237060341ff623e20f40a86fc5a76ce075e75c1dd62fbede8bbd94dd7a0312072cd60af12571c9dcf7edf2afe7e088e6c75267893156cd8482
6
+ metadata.gz: 1dfc0454884759ce1d2ccb9d71acb083200465e5bc153ab4f0d4dc69492ac5d9d82e3b5525af1e6a332e4152073aa7d072c8f2031ca80469964a2976892b749b
7
+ data.tar.gz: 311d119be7294aa3da85619543fa7a502be9a602ef72feaf524d263ead9fd10e48fd0c29ae5ad01874d7bb4178eed6173471acdf00b1a824734b098e8bd4e82b
data/lib/motor.rb CHANGED
@@ -53,6 +53,7 @@ end
53
53
  require 'motor/version'
54
54
  require 'motor/admin'
55
55
  require 'motor/assets'
56
+ require 'motor/active_record_utils'
56
57
  require 'motor/build_schema'
57
58
  require 'motor/api_query'
58
59
  require 'motor/tags'
@@ -62,6 +63,5 @@ require 'motor/dashboards'
62
63
  require 'motor/forms'
63
64
  require 'motor/alerts'
64
65
  require 'motor/hash_serializer'
65
- require 'motor/active_record_utils'
66
66
  require 'motor/net_http_utils'
67
67
  require 'motor/railtie'
@@ -4,7 +4,7 @@ module Motor
4
4
  module ActiveRecordUtils
5
5
  module DefinedScopesExtension
6
6
  def scope(name, _body)
7
- (@__scopes__ ||= []) << name
7
+ (@__scopes__ ||= []) << name.to_sym
8
8
 
9
9
  super
10
10
  end
@@ -13,13 +13,20 @@ module Motor
13
13
  if rel.klass.defined_scopes.include?(scope_symbol)
14
14
  rel.public_send(scope_symbol)
15
15
  else
16
- configs = Motor::Resource.find_by_name(rel.klass.name.underscore)
17
- scope_configs = configs.preferences[:scopes].find { |s| s[:name] == scope }
16
+ apply_filter_scope(rel, scope)
17
+ end
18
+ end
18
19
 
19
- return rel unless scope_configs
20
+ def apply_filter_scope(rel, scope)
21
+ configs = Motor::Resource.find_by_name(rel.klass.name.underscore)
20
22
 
21
- ApiQuery::Filter.call(rel, scope_configs[:preferences][:filter])
22
- end
23
+ return rel unless configs
24
+
25
+ scope_configs = configs.preferences[:scopes].find { |s| s[:name] == scope }
26
+
27
+ return rel unless scope_configs
28
+
29
+ ApiQuery::Filter.call(rel, scope_configs[:preferences][:filter])
23
30
  end
24
31
  end
25
32
  end
@@ -14,15 +14,15 @@ module Motor
14
14
  fname
15
15
  lname
16
16
  sname
17
+ company
18
+ domain
19
+ title
17
20
  phone
18
21
  phone_number
19
22
  email
20
- domain
21
23
  phone
22
- company
23
24
  filename
24
25
  file_name
25
- title
26
26
  url
27
27
  make
28
28
  brand
@@ -42,7 +42,7 @@ module Motor
42
42
  end
43
43
 
44
44
  def select_column_name(column_names)
45
- name = column_names.find { |column_name| column_name.in?(DISPLAY_NAMES) }
45
+ name = DISPLAY_NAMES.find { |column_name| column_name.in?(column_names) }
46
46
  name ||= column_names.find { |column_name| column_name.match?(DISPLAY_NAME_REGEXP) }
47
47
 
48
48
  name
@@ -4,6 +4,7 @@ module Motor
4
4
  module BuildSchema
5
5
  module LoadFromRails
6
6
  MUTEX = Mutex.new
7
+ UNIFIED_TYPES = ActiveRecordUtils::Types::UNIFIED_TYPES
7
8
 
8
9
  module_function
9
10
 
@@ -20,8 +21,7 @@ module Motor
20
21
  def models
21
22
  eager_load_models!
22
23
 
23
- models = load_descendants(ActiveRecord::Base).uniq
24
- models = models.reject(&:abstract_class)
24
+ models = ActiveRecord::Base.descendants.reject(&:abstract_class)
25
25
 
26
26
  models -= Motor::ApplicationRecord.descendants
27
27
  models -= [Motor::Audit]
@@ -32,12 +32,6 @@ module Motor
32
32
  models
33
33
  end
34
34
 
35
- def load_descendants(model)
36
- model.descendants + model.descendants.flat_map do |klass|
37
- load_descendants(klass)
38
- end
39
- end
40
-
41
35
  def build_model_schema(model)
42
36
  model_name = model.name
43
37
 
@@ -92,10 +86,13 @@ module Motor
92
86
  end
93
87
 
94
88
  def build_table_column(column, model, default_attrs)
89
+ is_enum = model.defined_enums[column.name]
90
+
95
91
  {
96
92
  name: column.name,
97
93
  display_name: column.name.humanize,
98
- column_type: ActiveRecordUtils::Types::UNIFIED_TYPES[column.type.to_s] || column.type.to_s,
94
+ column_type: is_enum ? 'string' : UNIFIED_TYPES[column.type.to_s] || column.type.to_s,
95
+ is_array: column.array?,
99
96
  access_type: COLUMN_NAME_ACCESS_TYPES.fetch(column.name, ColumnAccessTypes::READ_WRITE),
100
97
  default_value: default_attrs[column.name],
101
98
  validators: fetch_validators(model, column.name),
@@ -181,6 +178,10 @@ module Motor
181
178
  []
182
179
  end
183
180
 
181
+ enum = model.defined_enums[column_name]
182
+
183
+ validators += [{ includes: enum.keys }] if enum
184
+
184
185
  validators += model.validators_on(column_name).map do |validator|
185
186
  build_validator_hash(validator)
186
187
  end.compact
@@ -210,6 +211,14 @@ module Motor
210
211
  else
211
212
  Rails.application.eager_load!
212
213
  end
214
+
215
+ ActiveRecord::Base.descendants.each do |model|
216
+ model.reflections.each do |_, ref|
217
+ ref.klass
218
+ rescue StandardError
219
+ next
220
+ end
221
+ end
213
222
  end
214
223
  end
215
224
  end
@@ -9,8 +9,8 @@ module Motor
9
9
  cache_keys = LoadFromCache.load_cache_keys
10
10
 
11
11
  normalize_hash(
12
- app_version: Motor::VERSION,
13
- file_version: cache_keys.values.max.to_time,
12
+ engine_version: Motor::VERSION,
13
+ file_version: cache_keys.values.compact.max.to_time,
14
14
  resources: build_resources_hash(cache_keys[:resources]),
15
15
  configs: build_configs_hash(cache_keys[:configs]),
16
16
  queries: build_queries_hash(cache_keys[:queries]),
@@ -6,6 +6,8 @@ module Motor
6
6
  module_function
7
7
 
8
8
  def call(configs_hash)
9
+ return if configs_hash.blank?
10
+
9
11
  configs_hash = configs_hash.with_indifferent_access
10
12
 
11
13
  Motor::ApplicationRecord.transaction do
data/lib/motor/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Motor
4
- VERSION = '0.1.40'
4
+ VERSION = '0.1.41'
5
5
  end
@@ -5,9 +5,9 @@
5
5
  "fonts/ionicons.ttf?v=3.0.0-alpha.3": "fonts/ionicons.ttf",
6
6
  "fonts/ionicons.woff2?v=3.0.0-alpha.3": "fonts/ionicons.woff2",
7
7
  "fonts/ionicons.woff?v=3.0.0-alpha.3": "fonts/ionicons.woff",
8
- "main-57d82791202293600221.css.gz": "main-57d82791202293600221.css.gz",
9
- "main-57d82791202293600221.js.LICENSE.txt": "main-57d82791202293600221.js.LICENSE.txt",
10
- "main-57d82791202293600221.js.gz": "main-57d82791202293600221.js.gz",
11
- "main.css": "main-57d82791202293600221.css",
12
- "main.js": "main-57d82791202293600221.js"
8
+ "main-0ef3be65da8d3b0dbabb.css.gz": "main-0ef3be65da8d3b0dbabb.css.gz",
9
+ "main-0ef3be65da8d3b0dbabb.js.LICENSE.txt": "main-0ef3be65da8d3b0dbabb.js.LICENSE.txt",
10
+ "main-0ef3be65da8d3b0dbabb.js.gz": "main-0ef3be65da8d3b0dbabb.js.gz",
11
+ "main.css": "main-0ef3be65da8d3b0dbabb.css",
12
+ "main.js": "main-0ef3be65da8d3b0dbabb.js"
13
13
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motor-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.40
4
+ version: 0.1.41
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pete Matsyburka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-15 00:00:00.000000000 Z
11
+ date: 2021-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord-filter
@@ -242,8 +242,8 @@ files:
242
242
  - lib/motor/tasks/motor.rake
243
243
  - lib/motor/version.rb
244
244
  - ui/dist/fonts/ionicons.woff2
245
- - ui/dist/main-57d82791202293600221.css.gz
246
- - ui/dist/main-57d82791202293600221.js.gz
245
+ - ui/dist/main-0ef3be65da8d3b0dbabb.css.gz
246
+ - ui/dist/main-0ef3be65da8d3b0dbabb.js.gz
247
247
  - ui/dist/manifest.json
248
248
  homepage:
249
249
  licenses: