smriti 0.5.0
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 +7 -0
- data/LICENSE +21 -0
- data/README.md +168 -0
- data/Rakefile +15 -0
- data/app/assets/images/smriti/android-chrome-192x192.png +0 -0
- data/app/assets/images/smriti/android-chrome-512x512.png +0 -0
- data/app/assets/images/smriti/apple-touch-icon.png +0 -0
- data/app/assets/images/smriti/favicon-16x16.png +0 -0
- data/app/assets/images/smriti/favicon-32x32.png +0 -0
- data/app/assets/images/smriti/favicon-48x48.png +0 -0
- data/app/assets/images/smriti/favicon.ico +0 -0
- data/app/assets/images/smriti/favicon.svg +18 -0
- data/app/assets/images/smriti/logo.svg +18 -0
- data/app/assets/images/smriti/mask-icon.svg +5 -0
- data/app/assets/stylesheets/smriti/application.css +1040 -0
- data/app/controllers/smriti/admin/application_controller.rb +135 -0
- data/app/controllers/smriti/admin/dashboard_controller.rb +32 -0
- data/app/controllers/smriti/admin/mat_view_definitions_controller.rb +372 -0
- data/app/controllers/smriti/admin/mat_view_runs_controller.rb +185 -0
- data/app/controllers/smriti/admin/preferences_controller.rb +91 -0
- data/app/helpers/smriti/admin/datatable_helper.rb +249 -0
- data/app/helpers/smriti/admin/localized_digit_helper.rb +70 -0
- data/app/helpers/smriti/admin/ui_helper.rb +539 -0
- data/app/javascript/smriti/application.js +8 -0
- data/app/javascript/smriti/controllers/application.js +10 -0
- data/app/javascript/smriti/controllers/body_setup_controller.js +120 -0
- data/app/javascript/smriti/controllers/datatable_controller.js +351 -0
- data/app/javascript/smriti/controllers/details_controller.js +200 -0
- data/app/javascript/smriti/controllers/drawer_controller.js +470 -0
- data/app/javascript/smriti/controllers/flash_controller.js +112 -0
- data/app/javascript/smriti/controllers/index.js +10 -0
- data/app/javascript/smriti/controllers/mv_confirm_controller.js +435 -0
- data/app/javascript/smriti/controllers/tabs_controller.js +184 -0
- data/app/javascript/smriti/controllers/tooltip_controller.js +525 -0
- data/app/javascript/smriti/controllers/turbo_frame_lifecycle_controller.js +342 -0
- data/app/jobs/smriti/application_job.rb +144 -0
- data/app/jobs/smriti/create_view_job.rb +87 -0
- data/app/jobs/smriti/delete_view_job.rb +89 -0
- data/app/jobs/smriti/refresh_view_job.rb +94 -0
- data/app/models/concerns/smriti_i18n.rb +139 -0
- data/app/models/concerns/smriti_paginate.rb +70 -0
- data/app/models/concerns/smriti_query_helper.rb +36 -0
- data/app/models/smriti/application_record.rb +39 -0
- data/app/models/smriti/mat_view_definition.rb +254 -0
- data/app/models/smriti/mat_view_run.rb +275 -0
- data/app/views/layouts/smriti/_footer.html.erb +47 -0
- data/app/views/layouts/smriti/_header.html.erb +25 -0
- data/app/views/layouts/smriti/admin.html.erb +47 -0
- data/app/views/layouts/smriti/turbo_frame.html.erb +3 -0
- data/app/views/smriti/admin/dashboard/index.html.erb +38 -0
- data/app/views/smriti/admin/mat_view_definitions/_definition_actions.html.erb +94 -0
- data/app/views/smriti/admin/mat_view_definitions/_dt-index-empty-row.html.erb +11 -0
- data/app/views/smriti/admin/mat_view_definitions/_dt-index-row.html.erb +27 -0
- data/app/views/smriti/admin/mat_view_definitions/empty.html.erb +1 -0
- data/app/views/smriti/admin/mat_view_definitions/form.html.erb +79 -0
- data/app/views/smriti/admin/mat_view_definitions/index.html.erb +10 -0
- data/app/views/smriti/admin/mat_view_definitions/show.html.erb +40 -0
- data/app/views/smriti/admin/mat_view_runs/_dt-index-empty-row.html.erb +11 -0
- data/app/views/smriti/admin/mat_view_runs/_dt-index-row.html.erb +41 -0
- data/app/views/smriti/admin/mat_view_runs/index.html.erb +1 -0
- data/app/views/smriti/admin/mat_view_runs/show.html.erb +64 -0
- data/app/views/smriti/admin/preferences/show.html.erb +49 -0
- data/app/views/smriti/admin/ui/_card.html.erb +15 -0
- data/app/views/smriti/admin/ui/_datatable.html.erb +34 -0
- data/app/views/smriti/admin/ui/_datatable_filters.html.erb +45 -0
- data/app/views/smriti/admin/ui/_datatable_tbody.html.erb +11 -0
- data/app/views/smriti/admin/ui/_datatable_tfoot.html.erb +70 -0
- data/app/views/smriti/admin/ui/_datatable_thead.html.erb +105 -0
- data/app/views/smriti/admin/ui/_details.html.erb +10 -0
- data/app/views/smriti/admin/ui/_flash.html.erb +6 -0
- data/app/views/smriti/admin/ui/_table.html.erb +8 -0
- data/config/importmap.rb +9 -0
- data/config/locales/ar.yml +223 -0
- data/config/locales/de.yml +230 -0
- data/config/locales/en-AU-ocker.yml +223 -0
- data/config/locales/en-AU.yml +202 -0
- data/config/locales/en-BORK.yml +225 -0
- data/config/locales/en-CA.yml +223 -0
- data/config/locales/en-GB.yml +223 -0
- data/config/locales/en-LOL.yml +219 -0
- data/config/locales/en-SCOT.yml +223 -0
- data/config/locales/en-SHAKESPEARE.yml +225 -0
- data/config/locales/en-US-pirate.yml +222 -0
- data/config/locales/en-US.yml +225 -0
- data/config/locales/en-YODA.yml +221 -0
- data/config/locales/en.yml +223 -0
- data/config/locales/es.yml +226 -0
- data/config/locales/fa.yml +223 -0
- data/config/locales/fr-CA.yml +227 -0
- data/config/locales/fr.yml +227 -0
- data/config/locales/he.yml +218 -0
- data/config/locales/hi.yml +223 -0
- data/config/locales/it.yml +225 -0
- data/config/locales/ja-JP.yml +215 -0
- data/config/locales/pt.yml +225 -0
- data/config/locales/ru.yml +228 -0
- data/config/locales/ur.yml +225 -0
- data/config/locales/zh-CN.yml +214 -0
- data/config/locales/zh-TW.yml +214 -0
- data/config/routes.rb +36 -0
- data/lib/ext/exception.rb +20 -0
- data/lib/generators/smriti/install/install_generator.rb +86 -0
- data/lib/generators/smriti/install/templates/create_mat_view_definitions.rb +29 -0
- data/lib/generators/smriti/install/templates/create_mat_view_runs.rb +32 -0
- data/lib/generators/smriti/install/templates/smriti_initializer.rb +23 -0
- data/lib/smriti/admin/auth_bridge.rb +93 -0
- data/lib/smriti/admin/default_auth.rb +62 -0
- data/lib/smriti/configuration.rb +58 -0
- data/lib/smriti/engine.rb +82 -0
- data/lib/smriti/helpers/ui_test_ids.rb +49 -0
- data/lib/smriti/jobs/adapter.rb +81 -0
- data/lib/smriti/service_response.rb +75 -0
- data/lib/smriti/services/base_service.rb +471 -0
- data/lib/smriti/services/check_matview_exists.rb +76 -0
- data/lib/smriti/services/concurrent_refresh.rb +94 -0
- data/lib/smriti/services/create_view.rb +173 -0
- data/lib/smriti/services/delete_view.rb +111 -0
- data/lib/smriti/services/regular_refresh.rb +90 -0
- data/lib/smriti/services/swap_refresh.rb +181 -0
- data/lib/smriti/version.rb +21 -0
- data/lib/smriti.rb +64 -0
- data/lib/tasks/helpers.rb +185 -0
- data/lib/tasks/smriti_tasks.rake +151 -0
- metadata +206 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
---
|
|
2
|
+
ur:
|
|
3
|
+
activerecord:
|
|
4
|
+
attributes:
|
|
5
|
+
smriti/mat_view_definition:
|
|
6
|
+
created_at: تخلیق کی تاریخ
|
|
7
|
+
dependencies: انحصارات
|
|
8
|
+
last_run_at: آخری رن کی تاریخ
|
|
9
|
+
name: نام
|
|
10
|
+
refresh_strategy: ری فریش حکمت عملی
|
|
11
|
+
schedule_cron: شیڈول (cron)
|
|
12
|
+
sql: SQL (SELECT ...)
|
|
13
|
+
unique_index_columns: منفرد انڈیکس کالم
|
|
14
|
+
updated_at: تازہ کاری کی تاریخ
|
|
15
|
+
smriti/mat_view_run:
|
|
16
|
+
created_at: تخلیق کی تاریخ
|
|
17
|
+
details: تفصیلات
|
|
18
|
+
duration_ms: دورانیہ (ms)
|
|
19
|
+
error: غلطی
|
|
20
|
+
finished_at: مکمل ہونے کی تاریخ
|
|
21
|
+
mat_view_definition: تعریف
|
|
22
|
+
meta: میٹا ڈیٹا
|
|
23
|
+
operation: عمل
|
|
24
|
+
row_count_after: بعد میں قطاروں کی تعداد
|
|
25
|
+
row_count_before: پہلے قطاروں کی تعداد
|
|
26
|
+
rows_before_after: قطاریں (پہلے/بعد)
|
|
27
|
+
started_at: آغاز کی تاریخ
|
|
28
|
+
status: حالت
|
|
29
|
+
updated_at: تازہ کاری کی تاریخ
|
|
30
|
+
enums:
|
|
31
|
+
smriti/mat_view_definition:
|
|
32
|
+
refresh_strategy:
|
|
33
|
+
concurrent: ہم وقت
|
|
34
|
+
regular: معمول
|
|
35
|
+
swap: تبادلہ
|
|
36
|
+
smriti/mat_view_run:
|
|
37
|
+
operation:
|
|
38
|
+
create: بنائیں
|
|
39
|
+
drop: ہٹائیں
|
|
40
|
+
refresh: ری فریش
|
|
41
|
+
status:
|
|
42
|
+
failed: ناکام
|
|
43
|
+
running: جاری
|
|
44
|
+
success: کامیاب
|
|
45
|
+
errors:
|
|
46
|
+
models:
|
|
47
|
+
smriti/mat_view_definition:
|
|
48
|
+
attributes:
|
|
49
|
+
name:
|
|
50
|
+
blank: ضروری ہے
|
|
51
|
+
invalid: درست PostgreSQL شناخت نہیں
|
|
52
|
+
taken: منفرد ہونا چاہیے
|
|
53
|
+
sql:
|
|
54
|
+
blank: ضروری ہے
|
|
55
|
+
invalid: SELECT سے شروع ہونا چاہیے
|
|
56
|
+
unique_index_columns:
|
|
57
|
+
at_least_one: ہم وقت ری فریش حکمت عملی استعمال کرتے وقت کم از کم ایک
|
|
58
|
+
کالم ضروری ہے
|
|
59
|
+
hints:
|
|
60
|
+
smriti/mat_view_definition:
|
|
61
|
+
dependencies: اس میٹیریلائزڈ ویو پر منحصر ٹیبلز یا ویوز کی کوما سے جدا فہرست۔
|
|
62
|
+
name: ڈیٹا بیس میں میٹیریلائزڈ ویو کا نام۔
|
|
63
|
+
refresh_strategy: یہ طے کرتا ہے کہ میٹیریلائزڈ ویو کیسے ری فریش ہوگا۔
|
|
64
|
+
schedule_cron: معیاری cron فارمیٹ استعمال کریں۔ بغیر شیڈول کے لیے خالی چھوڑ
|
|
65
|
+
دیں۔
|
|
66
|
+
sql: SQL کوئری درست SELECT اسٹیٹمنٹ ہونی چاہیے۔
|
|
67
|
+
unique_index_columns: منفرد انڈیکس بنانے کے لیے کالم۔ ہم وقت ری فریش کے لیے
|
|
68
|
+
ضروری۔
|
|
69
|
+
smriti/mat_view_run:
|
|
70
|
+
error: اگر رن ناکام ہو تو غلطی کا پیغام۔
|
|
71
|
+
meta: اضافی میٹا ڈیٹا JSON فارمیٹ میں۔
|
|
72
|
+
operation: کیے گئے عمل کی قسم۔
|
|
73
|
+
status: رن کی موجودہ حالت۔
|
|
74
|
+
models:
|
|
75
|
+
smriti/mat_view_definition: میٹیریلائزڈ ویو کی تعریف
|
|
76
|
+
smriti/mat_view_run: میٹیریلائزڈ ویو کا رن
|
|
77
|
+
placeholders:
|
|
78
|
+
smriti/mat_view_definition:
|
|
79
|
+
dependencies: انحصارات درج کریں (کوما سے جدا، اختیاری)
|
|
80
|
+
name: نام درج کریں
|
|
81
|
+
refresh_strategy: ری فریش حکمت عملی منتخب کریں
|
|
82
|
+
schedule_cron: 0 0 * * * روزانہ نصف شب کے لیے، بغیر شیڈول کے خالی چھوڑیں
|
|
83
|
+
sql: SQL (SELECT ...) درج کریں
|
|
84
|
+
unique_index_columns: منفرد انڈیکس کالم درج کریں (کوما سے جدا، اختیاری)
|
|
85
|
+
smriti/mat_view_run:
|
|
86
|
+
error: غلطی کا پیغام
|
|
87
|
+
mat_view_definition: میٹیریلائزڈ ویو منتخب کریں
|
|
88
|
+
meta: میٹا ڈیٹا (JSON)
|
|
89
|
+
operation: عمل منتخب کریں
|
|
90
|
+
status: حالت منتخب کریں
|
|
91
|
+
i18n:
|
|
92
|
+
name: اردو
|
|
93
|
+
smriti:
|
|
94
|
+
actions: اعمال
|
|
95
|
+
cancel: منسوخ کریں
|
|
96
|
+
close: بند کریں
|
|
97
|
+
close_window: ونڈو بند کریں
|
|
98
|
+
create: بنائیں
|
|
99
|
+
dashboard:
|
|
100
|
+
metrics:
|
|
101
|
+
title: میٹرکس
|
|
102
|
+
title: ڈیش بورڈ
|
|
103
|
+
datatable:
|
|
104
|
+
clear_search_aria_label: تلاش صاف کریں
|
|
105
|
+
search_aria_label: ٹیبل میں تلاش
|
|
106
|
+
search_placeholder: تلاش...
|
|
107
|
+
definition: تعریف
|
|
108
|
+
definitions: تعریفیں
|
|
109
|
+
delete: حذف کریں
|
|
110
|
+
details: تفصیلات
|
|
111
|
+
edit: ترمیم
|
|
112
|
+
edit_var: "%{name} میں ترمیم"
|
|
113
|
+
errors:
|
|
114
|
+
frame_only: یہ عمل صرف فریم میں کیا جا سکتا ہے، ڈیش بورڈ پر ری ڈائریکٹ کر دیا
|
|
115
|
+
گیا۔
|
|
116
|
+
prevented_saving:
|
|
117
|
+
few: "%{count} غلطیوں نے محفوظ ہونے سے روکا:"
|
|
118
|
+
many: "%{count} غلطیوں نے محفوظ ہونے سے روکا:"
|
|
119
|
+
one: '1 غلطی نے محفوظ ہونے سے روکا:'
|
|
120
|
+
other: "%{count} غلطیوں نے محفوظ ہونے سے روکا:"
|
|
121
|
+
two: '2 غلطیوں نے محفوظ ہونے سے روکا:'
|
|
122
|
+
zero: کوئی غلطی نہیں، سب ٹھیک ہے!
|
|
123
|
+
filter_by: 'فلٹر کریں:'
|
|
124
|
+
footer:
|
|
125
|
+
copyright: "© %{year} %{company} جملہ حقوق محفوظ۔"
|
|
126
|
+
documentation: دستاویزات
|
|
127
|
+
need_help: گارنٹیڈ اپ ٹائم اور ماہر مدد درکار ہے؟
|
|
128
|
+
open_issue: Issue بنائیں
|
|
129
|
+
project_homepage: پروجیکٹ ہوم پیج
|
|
130
|
+
support: پیشہ ورانہ مدد حاصل کریں →
|
|
131
|
+
tagline: ڈویلپرز نے ❤️ سے بنایا، ڈویلپرز کے لیے۔
|
|
132
|
+
tooltip:
|
|
133
|
+
documentation: دستاویزات پڑھیں
|
|
134
|
+
gem_version: RubyGems صفحہ کھولنے کے لیے کلک کریں
|
|
135
|
+
open_issue: بگ رپورٹ کریں یا فیچر کی درخواست کریں
|
|
136
|
+
project_homepage: GitHub ریپوزٹری
|
|
137
|
+
support: پیشہ ورانہ سپورٹ پلان
|
|
138
|
+
version: v%{version}
|
|
139
|
+
header:
|
|
140
|
+
signed_in_as: "%{email} کے طور پر سائن ان ہیں"
|
|
141
|
+
history: تاریخ
|
|
142
|
+
loading: لوڈ ہو رہا ہے...
|
|
143
|
+
loading_definitions: تعریفیں لوڈ ہو رہی ہیں...
|
|
144
|
+
loading_runs: رن لوڈ ہو رہے ہیں...
|
|
145
|
+
mat_view_definition:
|
|
146
|
+
create_mv: Smriti بنائیں
|
|
147
|
+
create_mv_tooltip: ڈیٹا بیس میں میٹیریلائزڈ ویو بناتا ہے۔
|
|
148
|
+
delete_confirm: "%{name} کی تعریف حذف کریں؟ (Smriti حذف نہیں ہوگا)"
|
|
149
|
+
delete_tooltip: تعریف حذف کرتا ہے لیکن ڈیٹا بیس سے میٹیریلائزڈ ویو نہیں ہٹاتا۔
|
|
150
|
+
drop_mv: Smriti حذف کریں
|
|
151
|
+
drop_mv_cascade: Smriti حذف کریں (کاسکیڈ)
|
|
152
|
+
drop_mv_cascade_confirm: "%{name} کے لیے میٹیریلائزڈ ویو اور تمام منحصر آبجیکٹس
|
|
153
|
+
کو حذف کریں؟"
|
|
154
|
+
drop_mv_cascade_tooltip: ڈیٹا بیس میں میٹیریلائزڈ ویو اور تمام منحصر آبجیکٹس
|
|
155
|
+
حذف کرتا ہے۔ تعریف برقرار رہتی ہے۔
|
|
156
|
+
drop_mv_confirm: "%{name} کے لیے میٹیریلائزڈ ویو حذف کریں؟"
|
|
157
|
+
drop_mv_tooltip: ڈیٹا بیس میں میٹیریلائزڈ ویو حذف کرتا ہے۔ تعریف برقرار رہتی
|
|
158
|
+
ہے۔
|
|
159
|
+
edit_tooltip: میٹیریلائزڈ ویو کی تعریف میں ترمیم کریں۔
|
|
160
|
+
materialized_view: میٹیریلائزڈ ویو
|
|
161
|
+
materialized_view_exists: میٹیریلائزڈ ویو موجود ہے
|
|
162
|
+
materialized_view_not_exists: میٹیریلائزڈ ویو ابھی تک نہیں بنایا گیا!
|
|
163
|
+
new_definition: نئی تعریف
|
|
164
|
+
new_definition_tooltip: میٹیریلائزڈ ویو کی نئی تعریف بنائیں۔
|
|
165
|
+
no_definitions: کوئی میٹیریلائزڈ ویو تعریف نہیں ملی۔ آغاز کے لیے ایک بنائیں۔
|
|
166
|
+
no_definitions_if_filtered: منتخب کردہ فلٹر یا تلاش کے لیے کوئی میٹیریلائزڈ
|
|
167
|
+
ویو تعریف نہیں ملی۔
|
|
168
|
+
refresh_tooltip: ڈیٹا بیس میں میٹیریلائزڈ ویو کو ری فریش کرتا ہے۔
|
|
169
|
+
sql_summary_tooltip: SQL پھیلانے/سمیٹنے کے لیے کلک کریں
|
|
170
|
+
view_tooltip: میٹیریلائزڈ ویو کی تعریف دیکھیں۔
|
|
171
|
+
mat_view_run:
|
|
172
|
+
error_tooltip: اگر رن ناکام ہو تو غلطی کا پیغام۔
|
|
173
|
+
meta_tooltip: اضافی میٹا ڈیٹا JSON میں۔
|
|
174
|
+
no_runs: کوئی رن نہیں ملا۔
|
|
175
|
+
no_runs_if_filtered: منتخب فلٹر کے لیے کوئی رن نہیں ملا۔
|
|
176
|
+
view_details: تفصیلات دیکھیں
|
|
177
|
+
view_tooltip: رن کی تفصیلات دیکھیں۔
|
|
178
|
+
no_filter: کوئی بھی (بلا فلٹر)
|
|
179
|
+
no_value: کوئی قدر نہیں (nil یا خالی)
|
|
180
|
+
per_page: فی صفحہ
|
|
181
|
+
project_author: CodeVedas Inc.
|
|
182
|
+
project_description: Rails ایپلیکیشنز میں PostgreSQL میٹیریلائزڈ ویوز کے نظم کے
|
|
183
|
+
لیے ایڈمن انٹرفیس۔
|
|
184
|
+
project_tags: rails, ruby, میٹیریلائزڈ ویوز, admin, dashboard, ui, interface,
|
|
185
|
+
management
|
|
186
|
+
refresh: ری فریش
|
|
187
|
+
refresh_contents: مواد ری فریش کریں
|
|
188
|
+
reloading: دوبارہ لوڈ ہو رہا ہے...
|
|
189
|
+
reset: ری سیٹ
|
|
190
|
+
run: رن
|
|
191
|
+
runs: رنز
|
|
192
|
+
save_changes: تبدیلیاں محفوظ کریں
|
|
193
|
+
settings:
|
|
194
|
+
auto: خودکار
|
|
195
|
+
dark: گہرا
|
|
196
|
+
language: زبان
|
|
197
|
+
language_hint: اپنی انٹرفیس زبان منتخب کریں۔
|
|
198
|
+
light: ہلکا
|
|
199
|
+
theme: تھیم
|
|
200
|
+
theme_hint: خودکار آپ کے سسٹم کی ترجیح کے مطابق ہے، ہلکا اور گہرا اسے اوور رائڈ
|
|
201
|
+
کرتے ہیں۔
|
|
202
|
+
title: ترجیحات
|
|
203
|
+
title: Smriti Admin
|
|
204
|
+
view_var: "%{name} دیکھیں"
|
|
205
|
+
x_miliseconds: "%{count} ms"
|
|
206
|
+
number:
|
|
207
|
+
format:
|
|
208
|
+
delimiter: " "
|
|
209
|
+
separator: ","
|
|
210
|
+
numbers:
|
|
211
|
+
eight: '8'
|
|
212
|
+
five: '5'
|
|
213
|
+
four: '4'
|
|
214
|
+
nine: '9'
|
|
215
|
+
one: '1'
|
|
216
|
+
seven: '7'
|
|
217
|
+
six: '6'
|
|
218
|
+
three: '3'
|
|
219
|
+
two: '2'
|
|
220
|
+
zero: '0'
|
|
221
|
+
time:
|
|
222
|
+
am: صبح
|
|
223
|
+
formats:
|
|
224
|
+
datetime12hour: "%Y-%m-%d %I:%M:%S %p"
|
|
225
|
+
pm: شام
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
---
|
|
2
|
+
zh-CN:
|
|
3
|
+
activerecord:
|
|
4
|
+
attributes:
|
|
5
|
+
smriti/mat_view_definition:
|
|
6
|
+
created_at: 创建时间
|
|
7
|
+
dependencies: 依赖
|
|
8
|
+
last_run_at: 上次运行时间
|
|
9
|
+
name: 名称
|
|
10
|
+
refresh_strategy: 刷新策略
|
|
11
|
+
schedule_cron: 计划 (cron)
|
|
12
|
+
sql: SQL (SELECT ...)
|
|
13
|
+
unique_index_columns: 唯一索引列
|
|
14
|
+
updated_at: 更新时间
|
|
15
|
+
smriti/mat_view_run:
|
|
16
|
+
created_at: 创建时间
|
|
17
|
+
details: 详情
|
|
18
|
+
duration_ms: 耗时 (毫秒)
|
|
19
|
+
error: 错误
|
|
20
|
+
finished_at: 完成时间
|
|
21
|
+
mat_view_definition: 定义
|
|
22
|
+
meta: 元数据
|
|
23
|
+
operation: 操作
|
|
24
|
+
row_count_after: 运行后行数
|
|
25
|
+
row_count_before: 运行前行数
|
|
26
|
+
rows_before_after: 行数 (前/后)
|
|
27
|
+
started_at: 开始时间
|
|
28
|
+
status: 状态
|
|
29
|
+
updated_at: 更新时间
|
|
30
|
+
enums:
|
|
31
|
+
smriti/mat_view_definition:
|
|
32
|
+
refresh_strategy:
|
|
33
|
+
concurrent: 并发
|
|
34
|
+
regular: 常规
|
|
35
|
+
swap: 切换
|
|
36
|
+
smriti/mat_view_run:
|
|
37
|
+
operation:
|
|
38
|
+
create: 创建
|
|
39
|
+
drop: 删除
|
|
40
|
+
refresh: 刷新
|
|
41
|
+
status:
|
|
42
|
+
failed: 失败
|
|
43
|
+
running: 运行中
|
|
44
|
+
success: 成功
|
|
45
|
+
errors:
|
|
46
|
+
models:
|
|
47
|
+
smriti/mat_view_definition:
|
|
48
|
+
attributes:
|
|
49
|
+
name:
|
|
50
|
+
blank: 必须填写
|
|
51
|
+
invalid: 不是有效的 PostgreSQL 标识符
|
|
52
|
+
taken: 必须唯一
|
|
53
|
+
sql:
|
|
54
|
+
blank: 必须填写
|
|
55
|
+
invalid: 必须以 SELECT 开头
|
|
56
|
+
unique_index_columns:
|
|
57
|
+
at_least_one: 使用并发刷新策略时至少需要一个列
|
|
58
|
+
hints:
|
|
59
|
+
smriti/mat_view_definition:
|
|
60
|
+
dependencies: 以逗号分隔的表或视图列表,此 物化视图 依赖它们。
|
|
61
|
+
name: 数据库中 物化视图 的名称。
|
|
62
|
+
refresh_strategy: 确定 物化视图 的刷新方式。
|
|
63
|
+
schedule_cron: 使用标准 cron 格式。不安排时留空。
|
|
64
|
+
sql: SQL 查询必须是有效的 SELECT 语句。
|
|
65
|
+
unique_index_columns: 用于创建唯一索引的列。并发刷新必需。
|
|
66
|
+
smriti/mat_view_run:
|
|
67
|
+
error: 如果运行失败,显示错误消息。
|
|
68
|
+
meta: JSON 格式的额外元数据。
|
|
69
|
+
operation: 执行的操作类型。
|
|
70
|
+
status: 运行的当前状态。
|
|
71
|
+
models:
|
|
72
|
+
smriti/mat_view_definition: 物化视图 定义
|
|
73
|
+
smriti/mat_view_run: 物化视图 运行
|
|
74
|
+
placeholders:
|
|
75
|
+
smriti/mat_view_definition:
|
|
76
|
+
dependencies: 输入依赖 (逗号分隔,可选)
|
|
77
|
+
name: 输入名称
|
|
78
|
+
refresh_strategy: 选择刷新策略
|
|
79
|
+
schedule_cron: 0 0 * * * 表示每天零点,不安排时留空
|
|
80
|
+
sql: 输入 SQL (SELECT ...)
|
|
81
|
+
unique_index_columns: 输入唯一索引列 (逗号分隔,可选)
|
|
82
|
+
smriti/mat_view_run:
|
|
83
|
+
error: 错误消息
|
|
84
|
+
mat_view_definition: 选择 物化视图
|
|
85
|
+
meta: 元数据 (JSON)
|
|
86
|
+
operation: 选择操作
|
|
87
|
+
status: 选择状态
|
|
88
|
+
i18n:
|
|
89
|
+
name: 简体中文
|
|
90
|
+
smriti:
|
|
91
|
+
actions: 操作
|
|
92
|
+
cancel: 取消
|
|
93
|
+
close: 关闭
|
|
94
|
+
close_window: 关闭窗口
|
|
95
|
+
create: 创建
|
|
96
|
+
dashboard:
|
|
97
|
+
metrics:
|
|
98
|
+
title: 指标
|
|
99
|
+
title: 仪表盘
|
|
100
|
+
datatable:
|
|
101
|
+
clear_search_aria_label: 清除搜索
|
|
102
|
+
search_aria_label: 表格搜索
|
|
103
|
+
search_placeholder: 搜索...
|
|
104
|
+
definition: 定义
|
|
105
|
+
definitions: 定义
|
|
106
|
+
delete: 删除
|
|
107
|
+
details: 详情
|
|
108
|
+
edit: 编辑
|
|
109
|
+
edit_var: 编辑 %{name}
|
|
110
|
+
errors:
|
|
111
|
+
frame_only: 该操作只能在 frame 中执行,已重定向至仪表盘。
|
|
112
|
+
prevented_saving:
|
|
113
|
+
few: "%{count} 个错误阻止了保存:"
|
|
114
|
+
many: "%{count} 个错误阻止了保存:"
|
|
115
|
+
one: 1 个错误阻止了保存:
|
|
116
|
+
other: "%{count} 个错误阻止了保存:"
|
|
117
|
+
two: 2 个错误阻止了保存:
|
|
118
|
+
zero: 没有错误,一切顺利!
|
|
119
|
+
filter_by: 筛选条件:
|
|
120
|
+
footer:
|
|
121
|
+
copyright: "© %{year} %{company} 保留所有权利。"
|
|
122
|
+
documentation: 文档
|
|
123
|
+
need_help: 需要保证的正常运行时间和专家支持?
|
|
124
|
+
open_issue: 提交 Issue
|
|
125
|
+
project_homepage: 项目主页
|
|
126
|
+
support: 获取专业支持 →
|
|
127
|
+
tagline: 由开发者倾心打造,服务开发者。
|
|
128
|
+
tooltip:
|
|
129
|
+
documentation: 阅读文档
|
|
130
|
+
gem_version: 打开 RubyGems 页面
|
|
131
|
+
open_issue: 报告问题或请求功能
|
|
132
|
+
project_homepage: GitHub 仓库
|
|
133
|
+
support: 专业支持计划
|
|
134
|
+
version: v%{version}
|
|
135
|
+
header:
|
|
136
|
+
signed_in_as: 登录账号 %{email}
|
|
137
|
+
history: 历史
|
|
138
|
+
loading: 加载中...
|
|
139
|
+
loading_definitions: 加载定义...
|
|
140
|
+
loading_runs: 加载运行...
|
|
141
|
+
mat_view_definition:
|
|
142
|
+
create_mv: 创建 Smriti
|
|
143
|
+
create_mv_tooltip: 在数据库中创建物化视图。
|
|
144
|
+
delete_confirm: 删除定义 %{name}? (不会删除 Smriti)
|
|
145
|
+
delete_tooltip: 删除定义,但不会删除数据库中的物化视图。
|
|
146
|
+
drop_mv: 删除 Smriti
|
|
147
|
+
drop_mv_cascade: 删除 Smriti(级联)
|
|
148
|
+
drop_mv_cascade_confirm: 删除 %{name} 的物化视图及其所有依赖对象?
|
|
149
|
+
drop_mv_cascade_tooltip: 删除数据库中的物化视图及所有依赖对象。定义将保留。
|
|
150
|
+
drop_mv_confirm: 删除 %{name} 的物化视图?
|
|
151
|
+
drop_mv_tooltip: 删除数据库中的物化视图。定义将保留。
|
|
152
|
+
edit_tooltip: 编辑物化视图定义。
|
|
153
|
+
materialized_view: 物化视图
|
|
154
|
+
materialized_view_exists: 物化视图已存在
|
|
155
|
+
materialized_view_not_exists: 物化视图尚未创建!
|
|
156
|
+
new_definition: 新建定义
|
|
157
|
+
new_definition_tooltip: 创建新的物化视图定义。
|
|
158
|
+
no_definitions: 未找到物化视图定义。创建一个以开始。
|
|
159
|
+
no_definitions_if_filtered: 筛选或搜索条件下未找到物化视图定义。
|
|
160
|
+
refresh_tooltip: 刷新数据库中的物化视图。
|
|
161
|
+
sql_summary_tooltip: 点击展开/折叠 SQL
|
|
162
|
+
view_tooltip: 查看物化视图定义。
|
|
163
|
+
mat_view_run:
|
|
164
|
+
error_tooltip: 如果运行失败,显示错误消息。
|
|
165
|
+
meta_tooltip: JSON 格式的额外元数据。
|
|
166
|
+
no_runs: 未找到运行记录。
|
|
167
|
+
no_runs_if_filtered: 所选筛选条件下没有运行记录。
|
|
168
|
+
view_details: 查看详情
|
|
169
|
+
view_tooltip: 查看运行详情。
|
|
170
|
+
no_filter: 任意 (无筛选)
|
|
171
|
+
no_value: 无值 (nil 或空)
|
|
172
|
+
per_page: 每页
|
|
173
|
+
project_author: CodeVedas Inc.
|
|
174
|
+
project_description: 用于管理 Rails 应用中 PostgreSQL 物化视图的管理界面。
|
|
175
|
+
project_tags: rails, ruby, 物化视图, admin, dashboard, ui, interface, management
|
|
176
|
+
refresh: 刷新
|
|
177
|
+
refresh_contents: 刷新内容
|
|
178
|
+
reloading: 重新加载中...
|
|
179
|
+
reset: 重置
|
|
180
|
+
run: 运行
|
|
181
|
+
runs: 运行
|
|
182
|
+
save_changes: 保存更改
|
|
183
|
+
settings:
|
|
184
|
+
auto: 自动
|
|
185
|
+
dark: 深色
|
|
186
|
+
language: 语言
|
|
187
|
+
language_hint: 选择界面语言。
|
|
188
|
+
light: 浅色
|
|
189
|
+
theme: 主题
|
|
190
|
+
theme_hint: 自动遵循系统偏好,浅色和深色可覆盖。
|
|
191
|
+
title: 偏好设置
|
|
192
|
+
title: Smriti 管理
|
|
193
|
+
view_var: 查看 %{name}
|
|
194
|
+
x_miliseconds: "%{count} 毫秒"
|
|
195
|
+
number:
|
|
196
|
+
format:
|
|
197
|
+
delimiter: " "
|
|
198
|
+
separator: ","
|
|
199
|
+
numbers:
|
|
200
|
+
eight: 八
|
|
201
|
+
five: 五
|
|
202
|
+
four: 四
|
|
203
|
+
nine: 九
|
|
204
|
+
one: 一
|
|
205
|
+
seven: 七
|
|
206
|
+
six: 六
|
|
207
|
+
three: 三
|
|
208
|
+
two: 二
|
|
209
|
+
zero: 零
|
|
210
|
+
time:
|
|
211
|
+
am: 上午
|
|
212
|
+
formats:
|
|
213
|
+
datetime12hour: "%Y-%m-%d %I:%M:%S %p"
|
|
214
|
+
pm: 下午
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
---
|
|
2
|
+
zh-TW:
|
|
3
|
+
activerecord:
|
|
4
|
+
attributes:
|
|
5
|
+
smriti/mat_view_definition:
|
|
6
|
+
created_at: 建立時間
|
|
7
|
+
dependencies: 相依項
|
|
8
|
+
last_run_at: 上次執行時間
|
|
9
|
+
name: 名稱
|
|
10
|
+
refresh_strategy: 重新整理策略
|
|
11
|
+
schedule_cron: 排程 (cron)
|
|
12
|
+
sql: SQL (SELECT ...)
|
|
13
|
+
unique_index_columns: 唯一索引欄位
|
|
14
|
+
updated_at: 更新時間
|
|
15
|
+
smriti/mat_view_run:
|
|
16
|
+
created_at: 建立時間
|
|
17
|
+
details: 詳細資料
|
|
18
|
+
duration_ms: 耗時 (毫秒)
|
|
19
|
+
error: 錯誤
|
|
20
|
+
finished_at: 完成時間
|
|
21
|
+
mat_view_definition: 定義
|
|
22
|
+
meta: 中繼資料
|
|
23
|
+
operation: 操作
|
|
24
|
+
row_count_after: 執行後列數
|
|
25
|
+
row_count_before: 執行前列數
|
|
26
|
+
rows_before_after: 列數 (前/後)
|
|
27
|
+
started_at: 開始時間
|
|
28
|
+
status: 狀態
|
|
29
|
+
updated_at: 更新時間
|
|
30
|
+
enums:
|
|
31
|
+
smriti/mat_view_definition:
|
|
32
|
+
refresh_strategy:
|
|
33
|
+
concurrent: 並行
|
|
34
|
+
regular: 一般
|
|
35
|
+
swap: 切換
|
|
36
|
+
smriti/mat_view_run:
|
|
37
|
+
operation:
|
|
38
|
+
create: 建立
|
|
39
|
+
drop: 刪除
|
|
40
|
+
refresh: 重新整理
|
|
41
|
+
status:
|
|
42
|
+
failed: 失敗
|
|
43
|
+
running: 執行中
|
|
44
|
+
success: 成功
|
|
45
|
+
errors:
|
|
46
|
+
models:
|
|
47
|
+
smriti/mat_view_definition:
|
|
48
|
+
attributes:
|
|
49
|
+
name:
|
|
50
|
+
blank: 必須填寫
|
|
51
|
+
invalid: 不是有效的 PostgreSQL 識別字
|
|
52
|
+
taken: 必須唯一
|
|
53
|
+
sql:
|
|
54
|
+
blank: 必須填寫
|
|
55
|
+
invalid: 必須以 SELECT 開頭
|
|
56
|
+
unique_index_columns:
|
|
57
|
+
at_least_one: 使用並行重新整理策略時至少需要一個欄位
|
|
58
|
+
hints:
|
|
59
|
+
smriti/mat_view_definition:
|
|
60
|
+
dependencies: 以逗號分隔的資料表或檢視清單,此 實體化檢視依賴它們。
|
|
61
|
+
name: 資料庫中 實體化檢視的名稱。
|
|
62
|
+
refresh_strategy: 決定 實體化檢視如何重新整理。
|
|
63
|
+
schedule_cron: 使用標準 cron 格式。不排程時請留空。
|
|
64
|
+
sql: SQL 查詢必須是有效的 SELECT 敘述。
|
|
65
|
+
unique_index_columns: 用於建立唯一索引的欄位。並行重新整理必需。
|
|
66
|
+
smriti/mat_view_run:
|
|
67
|
+
error: 執行失敗時顯示的錯誤訊息。
|
|
68
|
+
meta: 以 JSON 格式表示的額外中繼資料。
|
|
69
|
+
operation: 執行的操作類型。
|
|
70
|
+
status: 執行的目前狀態。
|
|
71
|
+
models:
|
|
72
|
+
smriti/mat_view_definition: 實體化檢視定義
|
|
73
|
+
smriti/mat_view_run: 實體化檢視執行
|
|
74
|
+
placeholders:
|
|
75
|
+
smriti/mat_view_definition:
|
|
76
|
+
dependencies: 輸入相依項 (逗號分隔,可選)
|
|
77
|
+
name: 輸入名稱
|
|
78
|
+
refresh_strategy: 選擇重新整理策略
|
|
79
|
+
schedule_cron: 0 0 * * * 表示每日凌晨 0 點,不排程請留空
|
|
80
|
+
sql: 輸入 SQL (SELECT ...)
|
|
81
|
+
unique_index_columns: 輸入唯一索引欄位 (逗號分隔,可選)
|
|
82
|
+
smriti/mat_view_run:
|
|
83
|
+
error: 錯誤訊息
|
|
84
|
+
mat_view_definition: 選擇 實體化檢視
|
|
85
|
+
meta: 中繼資料 (JSON)
|
|
86
|
+
operation: 選擇操作
|
|
87
|
+
status: 選擇狀態
|
|
88
|
+
i18n:
|
|
89
|
+
name: 繁體中文
|
|
90
|
+
smriti:
|
|
91
|
+
actions: 操作
|
|
92
|
+
cancel: 取消
|
|
93
|
+
close: 關閉
|
|
94
|
+
close_window: 關閉視窗
|
|
95
|
+
create: 建立
|
|
96
|
+
dashboard:
|
|
97
|
+
metrics:
|
|
98
|
+
title: 指標
|
|
99
|
+
title: 儀表板
|
|
100
|
+
datatable:
|
|
101
|
+
clear_search_aria_label: 清除搜尋
|
|
102
|
+
search_aria_label: 搜尋表格
|
|
103
|
+
search_placeholder: 搜尋...
|
|
104
|
+
definition: 定義
|
|
105
|
+
definitions: 定義
|
|
106
|
+
delete: 刪除
|
|
107
|
+
details: 詳細資料
|
|
108
|
+
edit: 編輯
|
|
109
|
+
edit_var: 編輯 %{name}
|
|
110
|
+
errors:
|
|
111
|
+
frame_only: 此操作僅能在 frame 中執行,已重新導向至儀表板。
|
|
112
|
+
prevented_saving:
|
|
113
|
+
few: "%{count} 個錯誤阻止了儲存:"
|
|
114
|
+
many: "%{count} 個錯誤阻止了儲存:"
|
|
115
|
+
one: 1 個錯誤阻止了儲存:
|
|
116
|
+
other: "%{count} 個錯誤阻止了儲存:"
|
|
117
|
+
two: 2 個錯誤阻止了儲存:
|
|
118
|
+
zero: 沒有錯誤,一切順利!
|
|
119
|
+
filter_by: 篩選條件:
|
|
120
|
+
footer:
|
|
121
|
+
copyright: "© %{year} %{company} 版權所有。"
|
|
122
|
+
documentation: 文件
|
|
123
|
+
need_help: 需要保證的正常運作時間與專家協助嗎?
|
|
124
|
+
open_issue: 建立 Issue
|
|
125
|
+
project_homepage: 專案首頁
|
|
126
|
+
support: 取得專業支援 →
|
|
127
|
+
tagline: 由開發者以 ❤️ 打造,給開發者使用。
|
|
128
|
+
tooltip:
|
|
129
|
+
documentation: 閱讀文件
|
|
130
|
+
gem_version: 前往 RubyGems 頁面
|
|
131
|
+
open_issue: 回報錯誤或提出功能需求
|
|
132
|
+
project_homepage: GitHub 儲存庫
|
|
133
|
+
support: 專業支援方案
|
|
134
|
+
version: v%{version}
|
|
135
|
+
header:
|
|
136
|
+
signed_in_as: 以 %{email} 登入
|
|
137
|
+
history: 歷程
|
|
138
|
+
loading: 載入中...
|
|
139
|
+
loading_definitions: 正在載入定義...
|
|
140
|
+
loading_runs: 正在載入執行...
|
|
141
|
+
mat_view_definition:
|
|
142
|
+
create_mv: 建立 Smriti
|
|
143
|
+
create_mv_tooltip: 在資料庫中建立實體化檢視。
|
|
144
|
+
delete_confirm: 刪除定義 %{name}? (不會刪除 Smriti)
|
|
145
|
+
delete_tooltip: 刪除定義,但不會刪除資料庫中的實體化檢視。
|
|
146
|
+
drop_mv: 刪除 Smriti
|
|
147
|
+
drop_mv_cascade: 刪除 Smriti (連鎖)
|
|
148
|
+
drop_mv_cascade_confirm: 刪除 %{name} 的實體化檢視以及所有相依物件?
|
|
149
|
+
drop_mv_cascade_tooltip: 刪除資料庫中的實體化檢視以及所有相依物件。定義會保留。
|
|
150
|
+
drop_mv_confirm: 刪除 %{name} 的實體化檢視?
|
|
151
|
+
drop_mv_tooltip: 刪除資料庫中的實體化檢視。定義會保留。
|
|
152
|
+
edit_tooltip: 編輯實體化檢視定義。
|
|
153
|
+
materialized_view: 實體化檢視
|
|
154
|
+
materialized_view_exists: 實體化檢視已存在
|
|
155
|
+
materialized_view_not_exists: 實體化檢視尚未建立!
|
|
156
|
+
new_definition: 新增定義
|
|
157
|
+
new_definition_tooltip: 建立新的實體化檢視定義。
|
|
158
|
+
no_definitions: 找不到實體化檢視定義,請建立一個開始使用。
|
|
159
|
+
no_definitions_if_filtered: 依照所選的篩選或搜尋條件找不到實體化檢視定義。
|
|
160
|
+
refresh_tooltip: 重新整理資料庫中的實體化檢視。
|
|
161
|
+
sql_summary_tooltip: 按一下以展開/收合 SQL
|
|
162
|
+
view_tooltip: 檢視實體化檢視定義。
|
|
163
|
+
mat_view_run:
|
|
164
|
+
error_tooltip: 執行失敗時的錯誤訊息。
|
|
165
|
+
meta_tooltip: JSON 格式的額外中繼資料。
|
|
166
|
+
no_runs: 找不到執行紀錄。
|
|
167
|
+
no_runs_if_filtered: 所選篩選條件下沒有執行紀錄。
|
|
168
|
+
view_details: 檢視詳細資訊
|
|
169
|
+
view_tooltip: 檢視執行詳細資訊。
|
|
170
|
+
no_filter: 全部 (無篩選)
|
|
171
|
+
no_value: 無值 (nil 或空白)
|
|
172
|
+
per_page: 每頁
|
|
173
|
+
project_author: CodeVedas Inc.
|
|
174
|
+
project_description: 用於管理 Rails 應用程式中 PostgreSQL 實體化檢視的管理介面。
|
|
175
|
+
project_tags: rails, ruby, 實體化檢視, admin, dashboard, ui, interface, management
|
|
176
|
+
refresh: 重新整理
|
|
177
|
+
refresh_contents: 重新整理內容
|
|
178
|
+
reloading: 重新載入中...
|
|
179
|
+
reset: 重設
|
|
180
|
+
run: 執行
|
|
181
|
+
runs: 執行
|
|
182
|
+
save_changes: 儲存變更
|
|
183
|
+
settings:
|
|
184
|
+
auto: 自動
|
|
185
|
+
dark: 深色
|
|
186
|
+
language: 語言
|
|
187
|
+
language_hint: 選擇介面語言。
|
|
188
|
+
light: 淺色
|
|
189
|
+
theme: 佈景主題
|
|
190
|
+
theme_hint: 自動會遵循系統偏好,淺色與深色可覆寫。
|
|
191
|
+
title: 偏好設定
|
|
192
|
+
title: Smriti 管理
|
|
193
|
+
view_var: 檢視 %{name}
|
|
194
|
+
x_miliseconds: "%{count} 毫秒"
|
|
195
|
+
number:
|
|
196
|
+
format:
|
|
197
|
+
delimiter: " "
|
|
198
|
+
separator: ","
|
|
199
|
+
numbers:
|
|
200
|
+
eight: 八
|
|
201
|
+
five: 五
|
|
202
|
+
four: 四
|
|
203
|
+
nine: 九
|
|
204
|
+
one: 一
|
|
205
|
+
seven: 七
|
|
206
|
+
six: 六
|
|
207
|
+
three: 三
|
|
208
|
+
two: 二
|
|
209
|
+
zero: 零
|
|
210
|
+
time:
|
|
211
|
+
am: 上午
|
|
212
|
+
formats:
|
|
213
|
+
datetime12hour: "%Y-%m-%d %I:%M:%S %p"
|
|
214
|
+
pm: 下午
|
data/config/routes.rb
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Copyright Codevedas Inc. 2025-present
|
|
4
|
+
#
|
|
5
|
+
# This source code is licensed under the MIT license found in the
|
|
6
|
+
# LICENSE file in the root directory of this source tree.
|
|
7
|
+
|
|
8
|
+
LANG_RE = /[a-z]{2,8}(?:-[A-Za-z0-9]{2,12})?(?:-[A-Za-z0-9]{2,8})?/i
|
|
9
|
+
Smriti::Engine.routes.draw do
|
|
10
|
+
scope '(:lang)', constraints: { lang: LANG_RE } do
|
|
11
|
+
namespace :admin do
|
|
12
|
+
root to: 'dashboard#index'
|
|
13
|
+
resource :preferences, only: %i[show update]
|
|
14
|
+
resources :mat_view_definitions, path: 'definitions' do
|
|
15
|
+
member do
|
|
16
|
+
post :create_now
|
|
17
|
+
post :refresh
|
|
18
|
+
post :delete_now
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
resources :mat_view_runs, only: %i[index show], path: 'runs'
|
|
22
|
+
|
|
23
|
+
# redirect to dashboard for unknown paths.
|
|
24
|
+
get '*path', to: redirect { |params, req|
|
|
25
|
+
lang = (params[:lang].presence || Smriti::Engine.default_locale).to_s
|
|
26
|
+
"#{req.script_name}/#{lang}/admin"
|
|
27
|
+
}
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# redirect to admin dashboard for root path including lang.
|
|
31
|
+
root to: redirect { |params, req|
|
|
32
|
+
lang = (params[:lang].presence || Smriti::Engine.default_locale).to_s
|
|
33
|
+
"#{req.script_name}/#{lang}/admin"
|
|
34
|
+
}
|
|
35
|
+
end
|
|
36
|
+
end
|