motor-admin 0.2.24 → 0.2.28
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/locales/en.yml +6 -0
- data/config/locales/es.yml +6 -0
- data/config/locales/pt.yml +6 -0
- data/lib/motor/build_schema/load_from_rails.rb +8 -1
- data/lib/motor/configs/load_from_cache.rb +1 -3
- data/lib/motor/queries/run_query.rb +8 -5
- data/lib/motor/resources/custom_sql_columns_cache.rb +1 -1
- data/lib/motor/resources/fetch_configured_model.rb +17 -7
- data/lib/motor/version.rb +1 -1
- data/ui/dist/{main-8421aae2289372e89a1d.css.gz → main-9f6b19ff999e209e9d33.css.gz} +0 -0
- data/ui/dist/main-9f6b19ff999e209e9d33.js.gz +0 -0
- data/ui/dist/manifest.json +5 -5
- metadata +4 -4
- data/ui/dist/main-8421aae2289372e89a1d.js.gz +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 890e9157c807073892957ebdab77377f9cf36b91f5e00f04fd128f5591764fd2
|
4
|
+
data.tar.gz: 41aa043a58ec68f713bf2a75e21464eb8bad07f000cabacd9fa364e821329414
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5ea14f4ecd4d9deaadac11b12da0d5d689bf8256505a17b632a30a6758fb61e84650f6b997e352f77ccf91a139242aa04f81661d352cfb72087112304383756
|
7
|
+
data.tar.gz: a4ea641247486ee81239eda91e209e421082d8d45fe0dfffde355749f7e273b1f02964f3e668904a493610b38885da87928dbcee151a5c647c60675d84eb6e6a
|
data/config/locales/en.yml
CHANGED
@@ -278,3 +278,9 @@ en:
|
|
278
278
|
there_is_nothing_here_yet: There is nothing here yet 🤷♂️
|
279
279
|
is_null: Is null
|
280
280
|
is_not_null: Is not null
|
281
|
+
split_tags_by: Split tags by
|
282
|
+
do_not_split: Do not split
|
283
|
+
semicolon: Semicolon
|
284
|
+
hyphen: Hyphen
|
285
|
+
comma: Comma
|
286
|
+
slash: Slash
|
data/config/locales/es.yml
CHANGED
@@ -278,6 +278,12 @@ es:
|
|
278
278
|
there_is_nothing_here_yet: Todavía no hay nada aquí 🤷♂️
|
279
279
|
is_null: Es nulo
|
280
280
|
is_not_null: No es nulo
|
281
|
+
split_tags_by: Dividir las etiquetas por
|
282
|
+
do_not_split: No dividir
|
283
|
+
semicolon: Punto y coma
|
284
|
+
hyphen: Guión
|
285
|
+
comma: Coma
|
286
|
+
slash: Slash
|
281
287
|
i:
|
282
288
|
locale: es
|
283
289
|
select:
|
data/config/locales/pt.yml
CHANGED
@@ -274,6 +274,12 @@ pt:
|
|
274
274
|
there_is_nothing_here_yet: Ainda não há nada aqui 🤷♂️
|
275
275
|
is_null: É nulo
|
276
276
|
is_not_null: Não é nulo
|
277
|
+
split_tags_by: Dividir as etiquetas por
|
278
|
+
do_not_split: Não dividir
|
279
|
+
semicolon: Ponto-e-vírgula
|
280
|
+
hyphen: Hífen
|
281
|
+
comma: Vírgula
|
282
|
+
slash: Slash
|
277
283
|
i:
|
278
284
|
locale: pt
|
279
285
|
select:
|
@@ -116,13 +116,20 @@ module Motor
|
|
116
116
|
end
|
117
117
|
|
118
118
|
def build_table_column(column, model, default_attrs)
|
119
|
+
access_type =
|
120
|
+
if model.primary_key == column.name
|
121
|
+
ColumnAccessTypes::READ_ONLY
|
122
|
+
else
|
123
|
+
COLUMN_NAME_ACCESS_TYPES.fetch(column.name, ColumnAccessTypes::READ_WRITE)
|
124
|
+
end
|
125
|
+
|
119
126
|
{
|
120
127
|
name: column.name,
|
121
128
|
display_name: Utils.humanize_column_name(model.human_attribute_name(column.name)),
|
122
129
|
column_type: fetch_column_type(column, model),
|
123
130
|
column_source: ColumnSources::TABLE,
|
124
131
|
is_array: column.array?,
|
125
|
-
access_type:
|
132
|
+
access_type: access_type,
|
126
133
|
default_value: default_attrs[column.name],
|
127
134
|
validators: fetch_validators(model, column.name),
|
128
135
|
reference: nil,
|
@@ -83,9 +83,7 @@ module Motor
|
|
83
83
|
end
|
84
84
|
|
85
85
|
def load_cache_keys
|
86
|
-
result = ActiveRecord::Base.connection.
|
87
|
-
|
88
|
-
result = result.map(&:values) if result.first.is_a?(Hash)
|
86
|
+
result = ActiveRecord::Base.connection.exec_query(cache_keys_sql).rows
|
89
87
|
|
90
88
|
result.to_h.with_indifferent_access
|
91
89
|
end
|
@@ -61,7 +61,7 @@ module Motor
|
|
61
61
|
# @return [ActiveRecord::Result]
|
62
62
|
def execute_query(query, limit, variables_hash, filters)
|
63
63
|
result = nil
|
64
|
-
statement = prepare_sql_statement(query, limit, variables_hash, filters)
|
64
|
+
statement = prepare_sql_statement(connection_class.connection, query, limit, variables_hash, filters)
|
65
65
|
|
66
66
|
connection_class.transaction do
|
67
67
|
result =
|
@@ -129,17 +129,18 @@ module Motor
|
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
+
# @param connection [Object]
|
132
133
|
# @param query [Motor::Query]
|
133
134
|
# @param limit [Integer]
|
134
135
|
# @param variables_hash [Hash]
|
135
136
|
# @param filters [Hash]
|
136
137
|
# @return [Array]
|
137
|
-
def prepare_sql_statement(query, limit, variables_hash, filters)
|
138
|
+
def prepare_sql_statement(connection, query, limit, variables_hash, filters)
|
138
139
|
variables = merge_variable_default_values(query.preferences.fetch(:variables, []), variables_hash)
|
139
140
|
|
140
141
|
sql, query_variables = RenderSqlTemplate.call(query.sql_body, variables)
|
141
142
|
cte_sql = format(WITH_STATEMENT_TEMPLATE, sql_body: sql.strip.delete_suffix(';'))
|
142
|
-
cte_select_sql = build_cte_select_sql(limit, filters)
|
143
|
+
cte_select_sql = build_cte_select_sql(connection, limit, filters)
|
143
144
|
|
144
145
|
attributes = build_statement_attributes(query_variables)
|
145
146
|
|
@@ -149,7 +150,7 @@ module Motor
|
|
149
150
|
# @param limit [Number]
|
150
151
|
# @param filters [Hash]
|
151
152
|
# @return [String]
|
152
|
-
def build_cte_select_sql(limit, filters)
|
153
|
+
def build_cte_select_sql(connection, limit, filters)
|
153
154
|
table = Arel::Table.new(CTE_NAME)
|
154
155
|
|
155
156
|
arel_filters = build_filters_arel(filters)
|
@@ -157,7 +158,9 @@ module Motor
|
|
157
158
|
expresion = table.project(table[Arel.star])
|
158
159
|
expresion = expresion.where(arel_filters) if arel_filters.present?
|
159
160
|
|
160
|
-
expresion.take(limit.to_i).
|
161
|
+
expresion.take(limit.to_i) unless connection.class.name.include?('SQLServerAdapter')
|
162
|
+
|
163
|
+
expresion.to_sql.delete('"')
|
161
164
|
end
|
162
165
|
|
163
166
|
# @param filters [Hash]
|
@@ -5,6 +5,8 @@ module Motor
|
|
5
5
|
module FetchConfiguredModel
|
6
6
|
CACHE_HASH = HashWithIndifferentAccess.new
|
7
7
|
|
8
|
+
HAS_AND_BELONGS_TO_MANY_JOIN_MODEL_PREFIX = 'HABTM_'
|
9
|
+
|
8
10
|
module_function
|
9
11
|
|
10
12
|
def call(model, cache_key:)
|
@@ -130,13 +132,8 @@ module Motor
|
|
130
132
|
end
|
131
133
|
|
132
134
|
def configure_reflection_classes(klass, cache_key)
|
133
|
-
klass.
|
134
|
-
|
135
|
-
next unless ref.klass
|
136
|
-
next if ref.klass.anonymous?
|
137
|
-
rescue StandardError
|
138
|
-
next
|
139
|
-
end
|
135
|
+
klass._reflections.each do |key, ref|
|
136
|
+
next unless configure_reflection_class?(ref)
|
140
137
|
|
141
138
|
ref_dup = ref.dup
|
142
139
|
|
@@ -203,6 +200,19 @@ module Motor
|
|
203
200
|
end
|
204
201
|
end
|
205
202
|
|
203
|
+
def configure_reflection_class?(ref)
|
204
|
+
begin
|
205
|
+
return false unless ref.klass
|
206
|
+
rescue StandardError
|
207
|
+
return false
|
208
|
+
end
|
209
|
+
|
210
|
+
return false if ref.klass.anonymous?
|
211
|
+
return false if ref.klass.name.demodulize.starts_with?(HAS_AND_BELONGS_TO_MANY_JOIN_MODEL_PREFIX)
|
212
|
+
|
213
|
+
true
|
214
|
+
end
|
215
|
+
|
206
216
|
def sti_model?(model)
|
207
217
|
!model.superclass.abstract_class && model.columns_hash[model.inheritance_column.to_s]
|
208
218
|
end
|
data/lib/motor/version.rb
CHANGED
Binary file
|
Binary file
|
data/ui/dist/manifest.json
CHANGED
@@ -2601,9 +2601,9 @@
|
|
2601
2601
|
"icons/zoom-out.svg.gz": "icons/zoom-out.svg.gz",
|
2602
2602
|
"icons/zoom-question.svg": "icons/zoom-question.svg",
|
2603
2603
|
"icons/zoom-question.svg.gz": "icons/zoom-question.svg.gz",
|
2604
|
-
"main-
|
2605
|
-
"main-
|
2606
|
-
"main-
|
2607
|
-
"main.css": "main-
|
2608
|
-
"main.js": "main-
|
2604
|
+
"main-9f6b19ff999e209e9d33.css.gz": "main-9f6b19ff999e209e9d33.css.gz",
|
2605
|
+
"main-9f6b19ff999e209e9d33.js.LICENSE.txt": "main-9f6b19ff999e209e9d33.js.LICENSE.txt",
|
2606
|
+
"main-9f6b19ff999e209e9d33.js.gz": "main-9f6b19ff999e209e9d33.js.gz",
|
2607
|
+
"main.css": "main-9f6b19ff999e209e9d33.css",
|
2608
|
+
"main.js": "main-9f6b19ff999e209e9d33.js"
|
2609
2609
|
}
|
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.2.
|
4
|
+
version: 0.2.28
|
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-11-
|
11
|
+
date: 2021-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord-filter
|
@@ -1525,8 +1525,8 @@ files:
|
|
1525
1525
|
- ui/dist/icons/zoom-money.svg.gz
|
1526
1526
|
- ui/dist/icons/zoom-out.svg.gz
|
1527
1527
|
- ui/dist/icons/zoom-question.svg.gz
|
1528
|
-
- ui/dist/main-
|
1529
|
-
- ui/dist/main-
|
1528
|
+
- ui/dist/main-9f6b19ff999e209e9d33.css.gz
|
1529
|
+
- ui/dist/main-9f6b19ff999e209e9d33.js.gz
|
1530
1530
|
- ui/dist/manifest.json
|
1531
1531
|
homepage:
|
1532
1532
|
licenses:
|
Binary file
|