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.
Files changed (124) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +168 -0
  4. data/Rakefile +15 -0
  5. data/app/assets/images/smriti/android-chrome-192x192.png +0 -0
  6. data/app/assets/images/smriti/android-chrome-512x512.png +0 -0
  7. data/app/assets/images/smriti/apple-touch-icon.png +0 -0
  8. data/app/assets/images/smriti/favicon-16x16.png +0 -0
  9. data/app/assets/images/smriti/favicon-32x32.png +0 -0
  10. data/app/assets/images/smriti/favicon-48x48.png +0 -0
  11. data/app/assets/images/smriti/favicon.ico +0 -0
  12. data/app/assets/images/smriti/favicon.svg +18 -0
  13. data/app/assets/images/smriti/logo.svg +18 -0
  14. data/app/assets/images/smriti/mask-icon.svg +5 -0
  15. data/app/assets/stylesheets/smriti/application.css +1040 -0
  16. data/app/controllers/smriti/admin/application_controller.rb +135 -0
  17. data/app/controllers/smriti/admin/dashboard_controller.rb +32 -0
  18. data/app/controllers/smriti/admin/mat_view_definitions_controller.rb +372 -0
  19. data/app/controllers/smriti/admin/mat_view_runs_controller.rb +185 -0
  20. data/app/controllers/smriti/admin/preferences_controller.rb +91 -0
  21. data/app/helpers/smriti/admin/datatable_helper.rb +249 -0
  22. data/app/helpers/smriti/admin/localized_digit_helper.rb +70 -0
  23. data/app/helpers/smriti/admin/ui_helper.rb +539 -0
  24. data/app/javascript/smriti/application.js +8 -0
  25. data/app/javascript/smriti/controllers/application.js +10 -0
  26. data/app/javascript/smriti/controllers/body_setup_controller.js +120 -0
  27. data/app/javascript/smriti/controllers/datatable_controller.js +351 -0
  28. data/app/javascript/smriti/controllers/details_controller.js +200 -0
  29. data/app/javascript/smriti/controllers/drawer_controller.js +470 -0
  30. data/app/javascript/smriti/controllers/flash_controller.js +112 -0
  31. data/app/javascript/smriti/controllers/index.js +10 -0
  32. data/app/javascript/smriti/controllers/mv_confirm_controller.js +435 -0
  33. data/app/javascript/smriti/controllers/tabs_controller.js +184 -0
  34. data/app/javascript/smriti/controllers/tooltip_controller.js +525 -0
  35. data/app/javascript/smriti/controllers/turbo_frame_lifecycle_controller.js +342 -0
  36. data/app/jobs/smriti/application_job.rb +144 -0
  37. data/app/jobs/smriti/create_view_job.rb +87 -0
  38. data/app/jobs/smriti/delete_view_job.rb +89 -0
  39. data/app/jobs/smriti/refresh_view_job.rb +94 -0
  40. data/app/models/concerns/smriti_i18n.rb +139 -0
  41. data/app/models/concerns/smriti_paginate.rb +70 -0
  42. data/app/models/concerns/smriti_query_helper.rb +36 -0
  43. data/app/models/smriti/application_record.rb +39 -0
  44. data/app/models/smriti/mat_view_definition.rb +254 -0
  45. data/app/models/smriti/mat_view_run.rb +275 -0
  46. data/app/views/layouts/smriti/_footer.html.erb +47 -0
  47. data/app/views/layouts/smriti/_header.html.erb +25 -0
  48. data/app/views/layouts/smriti/admin.html.erb +47 -0
  49. data/app/views/layouts/smriti/turbo_frame.html.erb +3 -0
  50. data/app/views/smriti/admin/dashboard/index.html.erb +38 -0
  51. data/app/views/smriti/admin/mat_view_definitions/_definition_actions.html.erb +94 -0
  52. data/app/views/smriti/admin/mat_view_definitions/_dt-index-empty-row.html.erb +11 -0
  53. data/app/views/smriti/admin/mat_view_definitions/_dt-index-row.html.erb +27 -0
  54. data/app/views/smriti/admin/mat_view_definitions/empty.html.erb +1 -0
  55. data/app/views/smriti/admin/mat_view_definitions/form.html.erb +79 -0
  56. data/app/views/smriti/admin/mat_view_definitions/index.html.erb +10 -0
  57. data/app/views/smriti/admin/mat_view_definitions/show.html.erb +40 -0
  58. data/app/views/smriti/admin/mat_view_runs/_dt-index-empty-row.html.erb +11 -0
  59. data/app/views/smriti/admin/mat_view_runs/_dt-index-row.html.erb +41 -0
  60. data/app/views/smriti/admin/mat_view_runs/index.html.erb +1 -0
  61. data/app/views/smriti/admin/mat_view_runs/show.html.erb +64 -0
  62. data/app/views/smriti/admin/preferences/show.html.erb +49 -0
  63. data/app/views/smriti/admin/ui/_card.html.erb +15 -0
  64. data/app/views/smriti/admin/ui/_datatable.html.erb +34 -0
  65. data/app/views/smriti/admin/ui/_datatable_filters.html.erb +45 -0
  66. data/app/views/smriti/admin/ui/_datatable_tbody.html.erb +11 -0
  67. data/app/views/smriti/admin/ui/_datatable_tfoot.html.erb +70 -0
  68. data/app/views/smriti/admin/ui/_datatable_thead.html.erb +105 -0
  69. data/app/views/smriti/admin/ui/_details.html.erb +10 -0
  70. data/app/views/smriti/admin/ui/_flash.html.erb +6 -0
  71. data/app/views/smriti/admin/ui/_table.html.erb +8 -0
  72. data/config/importmap.rb +9 -0
  73. data/config/locales/ar.yml +223 -0
  74. data/config/locales/de.yml +230 -0
  75. data/config/locales/en-AU-ocker.yml +223 -0
  76. data/config/locales/en-AU.yml +202 -0
  77. data/config/locales/en-BORK.yml +225 -0
  78. data/config/locales/en-CA.yml +223 -0
  79. data/config/locales/en-GB.yml +223 -0
  80. data/config/locales/en-LOL.yml +219 -0
  81. data/config/locales/en-SCOT.yml +223 -0
  82. data/config/locales/en-SHAKESPEARE.yml +225 -0
  83. data/config/locales/en-US-pirate.yml +222 -0
  84. data/config/locales/en-US.yml +225 -0
  85. data/config/locales/en-YODA.yml +221 -0
  86. data/config/locales/en.yml +223 -0
  87. data/config/locales/es.yml +226 -0
  88. data/config/locales/fa.yml +223 -0
  89. data/config/locales/fr-CA.yml +227 -0
  90. data/config/locales/fr.yml +227 -0
  91. data/config/locales/he.yml +218 -0
  92. data/config/locales/hi.yml +223 -0
  93. data/config/locales/it.yml +225 -0
  94. data/config/locales/ja-JP.yml +215 -0
  95. data/config/locales/pt.yml +225 -0
  96. data/config/locales/ru.yml +228 -0
  97. data/config/locales/ur.yml +225 -0
  98. data/config/locales/zh-CN.yml +214 -0
  99. data/config/locales/zh-TW.yml +214 -0
  100. data/config/routes.rb +36 -0
  101. data/lib/ext/exception.rb +20 -0
  102. data/lib/generators/smriti/install/install_generator.rb +86 -0
  103. data/lib/generators/smriti/install/templates/create_mat_view_definitions.rb +29 -0
  104. data/lib/generators/smriti/install/templates/create_mat_view_runs.rb +32 -0
  105. data/lib/generators/smriti/install/templates/smriti_initializer.rb +23 -0
  106. data/lib/smriti/admin/auth_bridge.rb +93 -0
  107. data/lib/smriti/admin/default_auth.rb +62 -0
  108. data/lib/smriti/configuration.rb +58 -0
  109. data/lib/smriti/engine.rb +82 -0
  110. data/lib/smriti/helpers/ui_test_ids.rb +49 -0
  111. data/lib/smriti/jobs/adapter.rb +81 -0
  112. data/lib/smriti/service_response.rb +75 -0
  113. data/lib/smriti/services/base_service.rb +471 -0
  114. data/lib/smriti/services/check_matview_exists.rb +76 -0
  115. data/lib/smriti/services/concurrent_refresh.rb +94 -0
  116. data/lib/smriti/services/create_view.rb +173 -0
  117. data/lib/smriti/services/delete_view.rb +111 -0
  118. data/lib/smriti/services/regular_refresh.rb +90 -0
  119. data/lib/smriti/services/swap_refresh.rb +181 -0
  120. data/lib/smriti/version.rb +21 -0
  121. data/lib/smriti.rb +64 -0
  122. data/lib/tasks/helpers.rb +185 -0
  123. data/lib/tasks/smriti_tasks.rake +151 -0
  124. metadata +206 -0
@@ -0,0 +1,202 @@
1
+ en-AU:
2
+ activerecord:
3
+ attributes:
4
+ smriti/mat_view_definition:
5
+ created_at: "Created at"
6
+ dependencies: "Dependencies"
7
+ name: "Name"
8
+ refresh_strategy: "Refresh strategy"
9
+ schedule_cron: "Schedule (cron)"
10
+ sql: "SQL (SELECT ...)"
11
+ unique_index_columns: "Unique index columns"
12
+ updated_at: "Updated at"
13
+ smriti/mat_view_run:
14
+ created_at: "Created at"
15
+ details: "Details"
16
+ duration_ms: "Duration (ms)"
17
+ error: "Error"
18
+ finished_at: "Finished at"
19
+ mat_view_definition: "Definition"
20
+ meta: "Metadata"
21
+ operation: "Operation"
22
+ row_count_after: "Row count after"
23
+ row_count_before: "Row count before"
24
+ rows_before_after: "Rows (before/after)"
25
+ started_at: "Started at"
26
+ status: "Status"
27
+ updated_at: "Updated at"
28
+ enums:
29
+ smriti/mat_view_definition:
30
+ refresh_strategy:
31
+ concurrent: "Concurrent"
32
+ regular: "Regular"
33
+ swap: "Swap"
34
+ smriti/mat_view_run:
35
+ operation:
36
+ create: "Create"
37
+ drop: "Drop"
38
+ refresh: "Refresh"
39
+ status:
40
+ failed: "Failed"
41
+ running: "Running"
42
+ success: "Succeeded"
43
+ errors:
44
+ models:
45
+ smriti/mat_view_definition:
46
+ attributes:
47
+ name:
48
+ blank: "must be provided"
49
+ invalid: "is not a valid PostgreSQL identifier"
50
+ taken: "must be unique"
51
+ sql:
52
+ blank: "must be provided"
53
+ invalid: "must start with SELECT"
54
+ unique_index_columns:
55
+ at_least_one: "must have at least one column when using concurrent refresh strategy"
56
+ hints:
57
+ smriti/mat_view_definition:
58
+ dependencies: "Comma-separated list of tables or views this materialised view depends on."
59
+ name: "Name of the materialised view in the database."
60
+ refresh_strategy: "Determines how the materialised view is refreshed."
61
+ schedule_cron: "Use standard cron format. Leave empty for no scheduling."
62
+ sql: "The SQL query must be a valid SELECT statement."
63
+ unique_index_columns: "Columns to create a unique index on. Required for concurrent refresh."
64
+ smriti/mat_view_run:
65
+ error: "Error message if the run failed."
66
+ meta: "Additional metadata in JSON format."
67
+ operation: "Type of operation performed."
68
+ status: "Current status of the run."
69
+ models:
70
+ smriti/mat_view_definition: "Materialised View Definition"
71
+ smriti/mat_view_run: "Materialised View Run"
72
+ placeholders:
73
+ smriti/mat_view_definition:
74
+ dependencies: "Enter dependencies (comma separated, optional)"
75
+ name: "Enter name"
76
+ refresh_strategy: "Select refresh strategy"
77
+ schedule_cron: "0 0 * * * for daily at midnight, leave empty for no scheduling"
78
+ sql: "Enter SQL (SELECT ...)"
79
+ unique_index_columns: "Enter unique index columns (comma separated, optional)"
80
+ smriti/mat_view_run:
81
+ error: "Error message"
82
+ mat_view_definition: "Select materialised view"
83
+ meta: "Metadata (JSON)"
84
+ operation: "Select operation"
85
+ status: "Select status"
86
+ i18n:
87
+ name: English (Australia)
88
+ smriti:
89
+ actions: "Actions"
90
+ all_definitions: "All definitions"
91
+ all_operations: "All operations"
92
+ all_statuses: "All statuses"
93
+ cancel: "Cancel"
94
+ close: "Close"
95
+ close_window: "Close window"
96
+ create: "Create"
97
+ dashboard:
98
+ metrics:
99
+ title: "Metrics"
100
+ title: "Dashboard"
101
+ definition: "Definition"
102
+ definitions: "Definitions"
103
+ delete: "Delete"
104
+ details: "Details"
105
+ edit: "Edit"
106
+ edit_var: "Edit %{name}"
107
+ errors:
108
+ frame_only: "This action can only be performed in a frame, redirected to dashboard."
109
+ prevented_saving:
110
+ one: "1 error prevented saving:"
111
+ other: "%{count} errors prevented saving:"
112
+ filter_by: "Filter by:"
113
+ footer:
114
+ copyright: "© %{year} %{company} All rights reserved."
115
+ documentation: "Documentation"
116
+ need_help: "Need guaranteed uptime & expert help?"
117
+ open_issue: "Open an Issue"
118
+ project_homepage: "Project Homepage"
119
+ support: "Get Professional Support →"
120
+ tagline: "Built with ❤️ by developers, for developers."
121
+ tooltip:
122
+ documentation: "Read the documentation"
123
+ gem_version: "Click to visit the RubyGems page"
124
+ open_issue: "Report a bug or request a feature"
125
+ project_homepage: "GitHub repository"
126
+ support: "Professional support plans"
127
+ version: "v%{version}"
128
+ header:
129
+ signed_in_as: "Signed in as %{email}"
130
+ history: "History"
131
+ loading: "Loading..."
132
+ loading_definitions: "Loading definitions..."
133
+ loading_runs: "Loading runs..."
134
+ mat_view_definition:
135
+ create_mv: "Create MV"
136
+ create_mv_tooltip: "Creates the materialised view in the database."
137
+ delete_confirm: "Delete definition %{name}? (Does NOT drop MV)"
138
+ delete_tooltip: "Deletes the definition but does NOT drop the materialised view in the database."
139
+ drop_mv: "Drop MV"
140
+ drop_mv_cascade: "Drop MV (Cascade)"
141
+ drop_mv_cascade_confirm: "Drop materialised view and all dependent objects for %{name}?"
142
+ drop_mv_cascade_tooltip: "Drops the materialised view and all dependent objects in the database. Definition remains."
143
+ drop_mv_confirm: "Drop materialised view for %{name}?"
144
+ drop_mv_tooltip: "Drops the materialised view in the database. Definition remains."
145
+ edit_tooltip: "Edit materialised view definition."
146
+ materialized_view: "Materialised View"
147
+ materialized_view_exists: "Materialised view exists"
148
+ materialized_view_not_exists: "Materialised view not created yet!"
149
+ new_definition: "New definition"
150
+ new_definition_tooltip: "Create a new materialised view definition."
151
+ no_definitions: "No materialised view definitions found. Create one to get started."
152
+ refresh_tooltip: "Refreshes the materialised view in the database."
153
+ sql_summary_tooltip: "Click to expand/collapse SQL"
154
+ view_tooltip: "View materialised view definition."
155
+ mat_view_run:
156
+ error_tooltip: "Error message if the run failed."
157
+ meta_tooltip: "Additional metadata in JSON format."
158
+ no_runs: "No runs found."
159
+ no_runs_if_filtered: "No runs found for the selected filters."
160
+ view_details: "View details"
161
+ view_tooltip: "View run details."
162
+ project_author: "Codevedas Inc."
163
+ project_description: "Admin interface for managing PostgreSQL materialised views in Rails applications."
164
+ project_tags: "rails, ruby, materialised views, admin, dashboard, ui, interface, management"
165
+ refresh: "Refresh"
166
+ refresh_contents: "Refresh contents"
167
+ reloading: "Reloading..."
168
+ reset: "Reset"
169
+ run: "Run"
170
+ runs: "Runs"
171
+ save_changes: "Save changes"
172
+ settings:
173
+ auto: "Auto"
174
+ dark: "Dark"
175
+ language: "Language"
176
+ language_hint: "Choose your interface language."
177
+ light: "Light"
178
+ theme: "Theme"
179
+ theme_hint: "Auto follows your system preference, light and dark overrides it."
180
+ title: "Preferences"
181
+ title: "Smriti Admin"
182
+ view_var: "View %{name}"
183
+ number:
184
+ format:
185
+ delimiter: ","
186
+ separator: "."
187
+ numbers:
188
+ eight: 8
189
+ five: 5
190
+ four: 4
191
+ nine: 9
192
+ one: 1
193
+ seven: 7
194
+ six: 6
195
+ three: 3
196
+ two: 2
197
+ zero: 0
198
+ time:
199
+ am: "AM"
200
+ formats:
201
+ datetime12hour: "%Y-%m-%d %I:%M:%S %p"
202
+ pm: "PM"
@@ -0,0 +1,225 @@
1
+ ---
2
+ en-BORK:
3
+ activerecord:
4
+ attributes:
5
+ smriti/mat_view_definition:
6
+ created_at: Cre-aated-a et
7
+ dependencies: Deppy-dependees
8
+ last_run_at: Lest roon et
9
+ name: Nemey
10
+ refresh_strategy: Reffreshy strotegy
11
+ schedule_cron: Schedoole-a (crun)
12
+ sql: SQL (SELECT ... ya-hey!)
13
+ unique_index_columns: Oooneeke-a index culumns
14
+ updated_at: Updeeted-a et
15
+ smriti/mat_view_run:
16
+ created_at: Cre-aated-a et
17
+ details: Deeteeels
18
+ duration_ms: Dooreeshun (ms)
19
+ error: Ooops-a-doops
20
+ finished_at: Ffeenished-a et
21
+ mat_view_definition: Deffeeneshun
22
+ meta: Meetadeta
23
+ operation: Ooopereshun
24
+ row_count_after: Roo coont efter
25
+ row_count_before: Roo coont beffoore-a
26
+ rows_before_after: Rooos (beffoore-a/efter)
27
+ started_at: Sterted-a et
28
+ status: Stu-toos
29
+ updated_at: Updeeted-a et
30
+ enums:
31
+ smriti/mat_view_definition:
32
+ refresh_strategy:
33
+ concurrent: Cuncurrunt
34
+ regular: Regooler
35
+ swap: Svep
36
+ smriti/mat_view_run:
37
+ operation:
38
+ create: Creete-a
39
+ drop: Drupp
40
+ refresh: Reffresh
41
+ status:
42
+ failed: Fffooled
43
+ running: Rooneeng
44
+ success: Sooccess
45
+ errors:
46
+ models:
47
+ smriti/mat_view_definition:
48
+ attributes:
49
+ name:
50
+ blank: moost be-a prooffeeded-a
51
+ invalid: is noo a fffoonee PostgreSQL ide-a
52
+ taken: moost be-a oooneeke-a
53
+ sql:
54
+ blank: moost be-a prooffeeded-a
55
+ invalid: moost stert veet SELECT
56
+ unique_index_columns:
57
+ at_least_one: moost hefe-a et leeast vun culoom vhee youoo zee cuncurrunt
58
+ reffresh strotegy
59
+ hints:
60
+ smriti/mat_view_definition:
61
+ dependencies: Cummu-sepereted leest ooff tebles oor feeoos thees metereealized-a
62
+ feeoo deppends oon.
63
+ name: Nemee ooff zee metereealized-a feeoo in zee detebese-a.
64
+ refresh_strategy: Determenes hoo zee metereealized-a feeoo geets reffreshed-a.
65
+ schedule_cron: Use-a stenderd crun furmet. Leeefe-a it empty fur noo schedoole-a.
66
+ sql: Zee SQL query moost be-a feery deenkum SELECT stutement. Bork bork!
67
+ unique_index_columns: Culumns fur creeting-a unooque-a index. Reqooered fur
68
+ cuncurrunt reffresh.
69
+ smriti/mat_view_run:
70
+ error: Errur messege-a iff zee roon fffoels.
71
+ meta: Eddite-iunes meetadeta in JSON furmet.
72
+ operation: Type-a ooff ooopereshun perfurmed-a.
73
+ status: Coorent stootus ooff zee roon.
74
+ models:
75
+ smriti/mat_view_definition: Metereealized-a Feeoo Deffeeneshun
76
+ smriti/mat_view_run: Metereealized-a Feeoo Roon
77
+ placeholders:
78
+ smriti/mat_view_definition:
79
+ dependencies: Entered-a deppy-dependees (cummu sepereted-a, oopshunal)
80
+ name: Entered-a nemey
81
+ refresh_strategy: Sellect-a reffresh strotegy
82
+ schedule_cron: 0 0 * * * fur deely et meedneeght, leeefe-a empty fur noo schedoole-a
83
+ sql: Entered-a SQL (SELECT ...)
84
+ unique_index_columns: Entered-a unooque-a index culumns (cummu sepereted-a,
85
+ oopshunal)
86
+ smriti/mat_view_run:
87
+ error: Ooops-a-doops messege-a
88
+ mat_view_definition: Sellect-a metereealized-a feeoo
89
+ meta: Meetadeta (JSON)
90
+ operation: Sellect-a ooopereshun
91
+ status: Sellect-a stootus
92
+ i18n:
93
+ name: English (Börk Börk!)
94
+ smriti:
95
+ actions: Ecteeuns
96
+ cancel: Cuncel
97
+ close: Cluse-a
98
+ close_window: Cluse-a veendoo
99
+ create: Creete-a
100
+ dashboard:
101
+ metrics:
102
+ title: Metreecs
103
+ title: Deshbuerd
104
+ datatable:
105
+ clear_search_aria_label: Cleer zee serch
106
+ search_aria_label: Serch zee teble-a
107
+ search_placeholder: Serchy serch...
108
+ definition: Deffeeneshun
109
+ definitions: Deffeeneshuns
110
+ delete: Delete-a
111
+ details: Deeteeels
112
+ edit: I-deet
113
+ edit_var: I-deet %{name}
114
+ errors:
115
+ frame_only: Thees ecteeun oonly vurk-a in a freme-a, off tu zee deshbuerd!
116
+ prevented_saving:
117
+ few: "%{count} errs stoopped-a zee sefing:"
118
+ many: "%{count} errs stoopped-a zee sefing:"
119
+ one: 'Luun err stoopped-a zee sefing:'
120
+ other: "%{count} errs stoopped-a zee sefing:"
121
+ two: 'Tvu errs stoopped-a zee sefing:'
122
+ zero: Noo errs, bork bork!
123
+ filter_by: 'Feelter by:'
124
+ footer:
125
+ copyright: "© %{year} %{company} All rights reserved."
126
+ documentation: Dookoomenteshun
127
+ need_help: Need guurunteed-oopteeme-a und expert help-a?
128
+ open_issue: Oopen an Issue
129
+ project_homepage: Pruject Humepege-a
130
+ support: Get-a Pruffeshoonel Sooppurt →
131
+ tagline: Built veet ❤️ by developers, fur developers.
132
+ tooltip:
133
+ documentation: Reed dookoomenteshun
134
+ gem_version: Hop oon tu RubyGems pege-a
135
+ open_issue: Repert a bug oor requeest-a a feeeture-a
136
+ project_homepage: GitHub repositoriesh
137
+ support: Pruffeshoonel sooppurt pleens
138
+ version: v%{version}
139
+ header:
140
+ signed_in_as: Seeigned-a in es %{email}
141
+ history: Heestury
142
+ loading: Lueding...
143
+ loading_definitions: Lueding deffeeneshuns...
144
+ loading_runs: Lueding roons...
145
+ mat_view_definition:
146
+ create_mv: Creete-a Smriti
147
+ create_mv_tooltip: Creetes-a zee metereealized-a feeoo in zee detebese-a.
148
+ delete_confirm: Delete-a deffeeneshun %{name}? (Dues NOOHT drop Smriti)
149
+ delete_tooltip: Deletes-a deffeeneshun boot dues-a NOOHT drop zee metereealized-a
150
+ feeoo in zee detebese-a.
151
+ drop_mv: Drupp Smriti
152
+ drop_mv_cascade: Drupp Smriti (Cescede-a)
153
+ drop_mv_cascade_confirm: Drupp metereealized-a feeoo und ell depends fur %{name}?
154
+ drop_mv_cascade_tooltip: Drupps-a metereealized-a feeoo und ell depends in detebese-a.
155
+ Deffeeneshun steys.
156
+ drop_mv_confirm: Drupp metereealized-a feeoo fur %{name}?
157
+ drop_mv_tooltip: Drupps-a metereealized-a feeoo in detebese-a. Deffeeneshun
158
+ steys.
159
+ edit_tooltip: I-deet metereealized-a feeoo deffeeneshun.
160
+ materialized_view: Metereealized-a feeoo
161
+ materialized_view_exists: Metereealized-a feeoo existe-a
162
+ materialized_view_not_exists: Metereealized-a feeoo nut creeted-a yet!
163
+ new_definition: Noo deffeeneshun
164
+ new_definition_tooltip: Creete-a noo metereealized-a feeoo deffeeneshun.
165
+ no_definitions: Noo metereealized-a feeoo deffeeneshuns fffoond. Creete-a vun
166
+ tu stert.
167
+ no_definitions_if_filtered: Noo metereealized-a feeoo deffeeneshuns mutch zee
168
+ feilters oor serch.
169
+ refresh_tooltip: Reffreshes-a metereealized-a feeoo in detebese-a.
170
+ sql_summary_tooltip: Cleeck tu expeend/culleps SQL
171
+ view_tooltip: Feeoo metereealized-a feeoo deffeeneshun.
172
+ mat_view_run:
173
+ error_tooltip: Errur messege-a iff zee roon fffoels.
174
+ meta_tooltip: Eddite-iunes meetadeta in JSON.
175
+ no_runs: Noo roons fffoond.
176
+ no_runs_if_filtered: Noo roons fur zee feilters.
177
+ view_details: Feeoo deeteels
178
+ view_tooltip: Feeoo roon deeteels.
179
+ no_filter: Eny (noo feelter)
180
+ no_value: Noo ffeluoo (nil oor empty)
181
+ per_page: Per pege-a
182
+ project_author: CodeVedas Inc.
183
+ project_description: Admeen interffece-a fur munageeng PostgreSQL metereealized-a
184
+ feeoos in Reils epplifeceshuns.
185
+ project_tags: rails, ruby, materialized views, admin, dashboard, ui, interface,
186
+ management
187
+ refresh: Reffresh
188
+ refresh_contents: Reffresh cuntenst
189
+ reloading: Relueding...
190
+ reset: Reset
191
+ run: Roon
192
+ runs: Roons
193
+ save_changes: Sefe-a chengess
194
+ settings:
195
+ auto: Oooto
196
+ dark: Derk
197
+ language: Lunguage-a
198
+ language_hint: Sellect-a yoor interffece-a lunguage-a.
199
+ light: Leeght
200
+ theme: Theeme-a
201
+ theme_hint: Oooto ffollows yoor system, leght und derk oofferride-a.
202
+ title: Prefurences
203
+ title: Smriti Burk Burk
204
+ view_var: Feeoo %{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: AM
223
+ formats:
224
+ datetime12hour: "%Y-%m-%d %I:%M:%S %p"
225
+ pm: PM
@@ -0,0 +1,223 @@
1
+ ---
2
+ en-CA:
3
+ activerecord:
4
+ attributes:
5
+ smriti/mat_view_definition:
6
+ created_at: Created on
7
+ dependencies: Dependencies
8
+ last_run_at: Last run
9
+ name: Name
10
+ refresh_strategy: Refresh strategy
11
+ schedule_cron: Schedule (cron)
12
+ sql: SQL (SELECT ...)
13
+ unique_index_columns: Unique index columns
14
+ updated_at: Updated on
15
+ smriti/mat_view_run:
16
+ created_at: Created on
17
+ details: Details
18
+ duration_ms: Duration (ms)
19
+ error: Error
20
+ finished_at: Finished on
21
+ mat_view_definition: Definition
22
+ meta: Metadata
23
+ operation: Operation
24
+ row_count_after: Row count after
25
+ row_count_before: Row count before
26
+ rows_before_after: Rows (before/after)
27
+ started_at: Started on
28
+ status: Status
29
+ updated_at: Updated on
30
+ enums:
31
+ smriti/mat_view_definition:
32
+ refresh_strategy:
33
+ concurrent: Concurrent
34
+ regular: Regular
35
+ swap: Swap
36
+ smriti/mat_view_run:
37
+ operation:
38
+ create: Create
39
+ drop: Drop
40
+ refresh: Refresh
41
+ status:
42
+ failed: Failed
43
+ running: Running
44
+ success: Success
45
+ errors:
46
+ models:
47
+ smriti/mat_view_definition:
48
+ attributes:
49
+ name:
50
+ blank: must be provided
51
+ invalid: is not a valid PostgreSQL identifier
52
+ taken: must be unique
53
+ sql:
54
+ blank: must be provided
55
+ invalid: must start with SELECT
56
+ unique_index_columns:
57
+ at_least_one: must have at least one column when using the concurrent
58
+ refresh strategy
59
+ hints:
60
+ smriti/mat_view_definition:
61
+ dependencies: Comma-separated list of tables or views this materialized view
62
+ depends on.
63
+ name: Name of the materialized view in the database.
64
+ refresh_strategy: Determines how the materialized view is refreshed.
65
+ schedule_cron: Use standard cron format. Leave empty for no scheduling.
66
+ sql: The SQL query must be a valid SELECT statement.
67
+ unique_index_columns: Columns to create a unique index on. Required for concurrent
68
+ refresh.
69
+ smriti/mat_view_run:
70
+ error: Error message if the run failed.
71
+ meta: Additional metadata in JSON format.
72
+ operation: Type of operation performed.
73
+ status: Current status of the run.
74
+ models:
75
+ smriti/mat_view_definition: Materialized View Definition
76
+ smriti/mat_view_run: Materialized View Run
77
+ placeholders:
78
+ smriti/mat_view_definition:
79
+ dependencies: Enter dependencies (comma separated, optional)
80
+ name: Enter name
81
+ refresh_strategy: Select refresh strategy
82
+ schedule_cron: 0 0 * * * for daily at midnight, leave empty for no scheduling
83
+ sql: Enter SQL (SELECT ...)
84
+ unique_index_columns: Enter unique index columns (comma separated, optional)
85
+ smriti/mat_view_run:
86
+ error: Error message
87
+ mat_view_definition: Select materialized view
88
+ meta: Metadata (JSON)
89
+ operation: Select operation
90
+ status: Select status
91
+ i18n:
92
+ name: English (Canada)
93
+ smriti:
94
+ actions: Actions
95
+ cancel: Cancel
96
+ close: Close
97
+ close_window: Close window
98
+ create: Create
99
+ dashboard:
100
+ metrics:
101
+ title: Metrics
102
+ title: Dashboard
103
+ datatable:
104
+ clear_search_aria_label: Clear search
105
+ search_aria_label: Search table
106
+ search_placeholder: Search...
107
+ definition: Definition
108
+ definitions: Definitions
109
+ delete: Delete
110
+ details: Details
111
+ edit: Edit
112
+ edit_var: Edit %{name}
113
+ errors:
114
+ frame_only: This action can only be performed in a frame, redirected to dashboard.
115
+ prevented_saving:
116
+ few: "%{count} errors prevented saving:"
117
+ many: "%{count} errors prevented saving:"
118
+ one: '1 error prevented saving:'
119
+ other: "%{count} errors prevented saving:"
120
+ two: '2 errors prevented saving:'
121
+ zero: No errors, all good!
122
+ filter_by: 'Filter by:'
123
+ footer:
124
+ copyright: "© %{year} %{company} All rights reserved."
125
+ documentation: Documentation
126
+ need_help: Need guaranteed uptime & expert help?
127
+ open_issue: Open an Issue
128
+ project_homepage: Project Homepage
129
+ support: Get Professional Support →
130
+ tagline: Built with ❤️ by developers, for developers.
131
+ tooltip:
132
+ documentation: Read the documentation
133
+ gem_version: Click to visit the RubyGems page
134
+ open_issue: Report a bug or request a feature
135
+ project_homepage: GitHub repository
136
+ support: Professional support plans
137
+ version: v%{version}
138
+ header:
139
+ signed_in_as: Signed in as %{email}
140
+ history: History
141
+ loading: Loading...
142
+ loading_definitions: Loading definitions...
143
+ loading_runs: Loading runs...
144
+ mat_view_definition:
145
+ create_mv: Create Smriti
146
+ create_mv_tooltip: Creates the materialized view in the database.
147
+ delete_confirm: Delete definition %{name}? (Does NOT drop Smriti)
148
+ delete_tooltip: Deletes the definition but does NOT drop the materialized view
149
+ in the database.
150
+ drop_mv: Drop Smriti
151
+ drop_mv_cascade: Drop Smriti (Cascade)
152
+ drop_mv_cascade_confirm: Drop the materialized view and all dependent objects
153
+ for %{name}?
154
+ drop_mv_cascade_tooltip: Drops the materialized view and all dependent objects
155
+ in the database. Definition remains.
156
+ drop_mv_confirm: Drop the materialized view for %{name}?
157
+ drop_mv_tooltip: Drops the materialized view in the database. Definition remains.
158
+ edit_tooltip: Edit materialized view definition.
159
+ materialized_view: Materialized View
160
+ materialized_view_exists: Materialized view exists
161
+ materialized_view_not_exists: Materialized view not created yet!
162
+ new_definition: New definition
163
+ new_definition_tooltip: Create a new materialized view definition.
164
+ no_definitions: No materialized view definitions found. Create one to get started.
165
+ no_definitions_if_filtered: No materialized view definitions found for the selected
166
+ filters and/or search.
167
+ refresh_tooltip: Refreshes the materialized view in the database.
168
+ sql_summary_tooltip: Click to expand/collapse SQL
169
+ view_tooltip: View materialized view definition.
170
+ mat_view_run:
171
+ error_tooltip: Error message if the run failed.
172
+ meta_tooltip: Additional metadata in JSON format.
173
+ no_runs: No runs found.
174
+ no_runs_if_filtered: No runs found for the selected filters.
175
+ view_details: View details
176
+ view_tooltip: View run details.
177
+ no_filter: Any (no filter)
178
+ no_value: No value (nil or empty)
179
+ per_page: Per page
180
+ project_author: CodeVedas Inc.
181
+ project_description: Admin interface for managing PostgreSQL materialized views
182
+ in Rails applications.
183
+ project_tags: rails, ruby, materialized views, admin, dashboard, ui, interface,
184
+ management
185
+ refresh: Refresh
186
+ refresh_contents: Refresh contents
187
+ reloading: Reloading...
188
+ reset: Reset
189
+ run: Run
190
+ runs: Runs
191
+ save_changes: Save changes
192
+ settings:
193
+ auto: Auto
194
+ dark: Dark
195
+ language: Language
196
+ language_hint: Choose your interface language.
197
+ light: Light
198
+ theme: Theme
199
+ theme_hint: Auto follows your system preference; light and dark override it.
200
+ title: Preferences
201
+ title: Smriti Admin
202
+ view_var: View %{name}
203
+ x_miliseconds: "%{count} ms"
204
+ number:
205
+ format:
206
+ delimiter: ","
207
+ separator: "."
208
+ numbers:
209
+ eight: 8
210
+ five: 5
211
+ four: 4
212
+ nine: 9
213
+ one: 1
214
+ seven: 7
215
+ six: 6
216
+ three: 3
217
+ two: 2
218
+ zero: 0
219
+ time:
220
+ am: AM
221
+ formats:
222
+ datetime12hour: "%Y-%m-%d %I:%M:%S %p"
223
+ pm: PM